mariaDB не может подключиться с удаленного хоста

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", но не знаю, как его изменить.

2
задан 5 March 2017 в 15:32
4 ответа

Кредиты : 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 сервера, чтобы изменения вступили в силу.

.
0
ответ дан 3 December 2019 в 14:12

Процесс mysqld прослушивает 127.0.0.1:3306, как показано в выводе netstat. Это объясняет, почему при удаленном подключении вы получаете ошибку об отказе в соединении. Это просто локальный прием соединений.

После проверки вы изменяете правильный конфигурационный файл, вам нужно перезапустить mysqld процесс.

.
0
ответ дан 3 December 2019 в 14:12

Проблема в том, где находится ваша конфигурация. Не думаю, что /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 выходе, я думаю, что ваш дополнительный конфигурационный файл просто не принимается.

.
0
ответ дан 3 December 2019 в 14:12

У меня была такая же проблема, и я мог решить ее, проверив следующие аспекты:

Прежде всего, доступ к вашей базе данных с учетной записью, которая принимает удаленные соединения. Как упоминалось в других сообщениях, эта учетная запись должна иметь% в имени сервера вместо localhost.

Я не знаю, безопасно ли это делать, но я думаю, что это нормально для начала.

Пример phpmyadmin Layout

После этого вы должны проверить файлы конфигурации из

  • / etc / mysql
  • /etc/mysql/mariadb.conf.d/

Я должен был вывести из * / 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     

После этого мое удаленное соединение заработало. Надеюсь, это поможет.

0
ответ дан 3 December 2019 в 14:12

Теги

Похожие вопросы