MariaDB [(none)]> show variables like '%skip_networking%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| skip_networking | OFF |
+-----------------+-------+
1 row in set (0.00 sec)
Когда я пробую
mysql -uroot -p -h 192.168.0.30
, я получил это
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.0.30' (111 "Connection refused")
В файле
/etc/mysql/mariadb.conf.d/50-server.cnf
У меня есть следующее:
bind-address = 0.0.0.0
# skip-networking
Надеюсь, вы можете мне помочь.
локальное соединение работает.
sudo netstat -ntlup | grep mysql
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 11580/mysqld
Я вижу "127.0.0.1:3306", но не знаю, как его изменить.
Кредиты : https://stackoverflow.com/a/14779244/7499402
По умолчанию отключен удаленный root
доступ. Если вы хотите включить это, запустите эту SQL команду локально:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
А затем найдите следующую строку и закомментируйте ее в вашем my.cnf
, который обычно живет на /etc/mysql/my.cnf
на Unix/OSX системах. Если это система Windows, то вы можете найти его в каталоге установки MySQL, обычно что-то вроде C:\Program Files\MySQL\MySQL Server 5.5\
и имя файла будет my.ini
.
Смена строки
bind-address = 127.0.0.1
на
#bind-address = 127.0.0.1
И перезагрузка MySQL сервера, чтобы изменения вступили в силу.
. Процесс mysqld
прослушивает 127.0.0.1:3306
, как показано в выводе netstat
. Это объясняет, почему при удаленном подключении вы получаете ошибку об отказе в соединении
. Это просто локальный прием соединений.
После проверки вы изменяете правильный конфигурационный файл, вам нужно перезапустить mysqld процесс.
.Проблема в том, где находится ваша конфигурация. Не думаю, что /etc/mysql/mariadb.conf.d подхвачен mariadb.
Их документация для решения вашей проблемы (https://mariadb.com/kb/en/mariadb/configuring-mariadb-for-remote-client-access/) предлагает поместить ваш bind-адрес в my. cnf файл:
* /etc/my.cnf (*nix/BSD)
* $MYSQL_HOME/my.cnf (*nix/BSD) *Most Notably /etc/mysql/my.cnf
* SYSCONFDIR/my.cnf (*nix/BSD)
* DATADIR\my.ini (Windows)
Я подозреваю, что вы можете добавить ваш bind-address
config в /etc/mysql/my.cnf.local, и это заставит mariadb прослушать 0.0.0.0.
Основываясь на вашем netstat выходе, я думаю, что ваш дополнительный конфигурационный файл просто не принимается.
.У меня была такая же проблема, и я мог решить ее, проверив следующие аспекты:
Прежде всего, доступ к вашей базе данных с учетной записью, которая принимает удаленные соединения. Как упоминалось в других сообщениях, эта учетная запись должна иметь% в имени сервера вместо localhost.
Я не знаю, безопасно ли это делать, но я думаю, что это нормально для начала.
После этого вы должны проверить файлы конфигурации из
Я должен был вывести из * / etc / mysql / my.conf, потому что он включает эти строки
user@debian:/etc/mysql$ cat my.cnf
# The MariaDB configuration file
#
# The MariaDB/MySQL tools read configuration files in the following order:
# 1. "/etc/mysql/mariadb.cnf" (this file) to set global defaults,
# 2. "/etc/mysql/conf.d/*.cnf" to set global options.
# 3. "/etc/mysql/mariadb.conf.d/*.cnf" to set MariaDB-only options.
# 4. "~/.my.cnf" to set user-specific options.
[client-server]
# Import all .cnf files from configuration directory
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/
Дело в том, что второй каталог владеет этими файлами:
user@debian:/etc/mysql/mariadb.conf.d$ ls
50-client.cnf 50-mysql-clients.cnf 50-mysqld_safe.cnf 50-server.cnf
В котором логически, в 50-server.cnf содержатся строки, на которые есть ссылки в сообщения, но больше не в /etc/mysql/my.cnf . Примечание: выходные данные этой команды были отредактированы, чтобы уточнить ответ.
Просто закомментируйте строку адреса привязки и подключитесь к своей базе данных с удаленного терминала.
user@debian:/etc/mysql/mariadb.conf.d$ cat 50-server.cnf
#
# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
#
# See the examples of server my.cnf files in /usr/share/mysql/
#
[server]
[mysqld]
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address = 127.0.0.1
После этого мое удаленное соединение заработало. Надеюсь, это поможет.