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
вывод. Это объясняет, почему вы получаете connection refused
ошибка при удаленном подключении. Он просто принимает соединения локально.
Убедившись, что вы изменяете правильный файл конфигурации, вам необходимо перезапустить процесс mysqld.
Проблема заключается в расположении вашей конфигурации. Я не думаю, что /etc/mysql/mariadb.conf.d подхвачен mariadb.
Их документация для решения вашей проблемы (https://mariadb.com/kb/en/mariadb/configuring-mariadb-for-remote-client-access/) предлагает поместить ваш адрес привязки в файл 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
После этого мое удаленное соединение заработало. Надеюсь, это поможет.