Пытаюсь настроить MySQL для доступа с любого хоста.
> показать гранты для 'root'@'%';
ПРЕДОСТАВИТЬ ВСЕ ПРИВИЛЕГИИ НА *.* 'root'@'%' С ОПЦИЕЙ GRANT
мой.cnf
[root@p419386 etc]# cat my.cnf
#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
Файлы в /etc/my.cnf.d: client.cnf enable_encryption.preset mysql-clients.cnf server.cnf tokudb.cnf Ни один не содержитskip-networking
Всервер.cnf
bind-address=0.0.0.0
Я использую CentOS 7, uname -a
дает
Linux p419386 2.6.32-042stab120.16 #1 SMP Tue Dec 13 20:58:28 MSK 2016 x86_64 x86_64 x86_64 GNU/Linux
MySQL сервер10.1.21-MariaDB MariaDB Server
Все еще не могу подключиться с удаленного хоста :(
Проблема определенно не в сети или брандмауэре.
Верны ли указанные выше настройки?В чем дело?
После всегопроблема была найденав правилах iptables. Так что конфигурация MySQL в порядке!
решение1
Если мы посмотрим на конфигурацию, которую вы имеете (насколько вы ее явно разместили и рассказали нам, что в ней), то похоже, что она должна работать. По крайней мере,официальная база знаний MariaDBбудет указывать на это.
Таким образом, вы можете либо упустить что-то в этих файлах конфигурации, либо столкнуться с другой проблемой. Хотя вы и сказали, что проблема не может быть связана с сетью или брандмауэром, ваша последняя ошибка ERROR 2003 (HY000): Can't connect to MySQL server on '<host>' (113)
указывает на то, что это все еще может быть проблемой.
Вы можете попробовать подключиться к локальному IP (127.0.0.1) на вашем сервере с помощью mysql commend. Глядя на вопрос, на который я ссылался, вы бы использовали:
mysql -h 127.0.0.1 -u root -p
Если вам удалось установить соединение с помощью этой команды, вы будете знать, что ваша MariaDB запущена и принимает IP-подключения.
Теперь может произойти следующее: он не привязывается к внешним IP-адресам (возможно, попробуйте установить только свой внешний IP-адрес для bind-host
), или ваш брандмауэр (клиент или сервер) или другой сетевой компонент могут мешать и блокировать соединение.
Чтобы проверить, к чему привязан сервер, вы можете запустить (как пользователь root или с помощью sudo):
netstat -l -n -p
Это должно дать вам строку вроде следующей:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
...
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1234/mysqld
...
Как вы можете видеть, в этом случае сервер MySQL работает с адресом localhost на порту 3306.