Linux 容器之间的通信(lxc)

Linux 容器之间的通信(lxc)

我有一个用于 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 密码

相关内容