我有一个用于 Apache Web 服务器的容器,另一个用于 Mysql 服务器。我为它们分配了 2 个静态 IP
NAME STATE IPV4 IPV6 AUTOSTART
-----------------------------------------------------------
apache RUNNING 10.0.3.10 - YES
mysql RUNNING 10.0.3.20 - YES
我遇到的问题是,我似乎无法从 Apache 服务器访问 Mysql 服务器。
如果我在 mysql 服务器上运行此命令:
mysql -h 127.0.0.1 -u root -p
我登录没有问题,但如果我在 Web 服务器上运行此命令:
mysql -h 10.0.3.20 -u root -p
我收到此错误:
ERROR 2003 (HY000): Can't connect to MySQL server on '10.0.3.20' (111)
我错过了什么?
答案1
问题不在于容器,而在于 mysql 配置。默认情况下,mysql 仅在 localhost 上侦听。您需要将其更改为0.0.0.0
绑定地址。
例如,更改之前您可以看到 127.0.0.1:3306。它应该是 0.0.0.0:3306
root@mysql:~# netstat -anp |grep LISTEN
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 418/mysqld
edit /etc/mysql/my.cnf
编辑 bind-address 行,使其看起来像这样:
bind-address = 0.0.0.0
然后重新启动mysql服务。
连接到mysql容器中的mysql并使用以下命令创建root@“all”用户。
授予所有权限。TO'root'@'%' WITH GRANT OPTION IDENTIFIED BY 'PASSWORD';刷新权限;
请记住:将 PASSWORD 替换为您想要的 root@all 的 root 密码