不能使用127.0.0.1连接mysql服务器的docker容器,但可以使用IP?

在我的个人电脑中,有一个docker mysql容器与端口3306绑定。它工作的很好。 我可以通过另一台PC将这个容器中的mysql服务器连接起来。

sh$ mysql -hxxx.xxx.xxx.110 -uroot -p 

在主机上,我可以通过这种方式连接容器:

 sh$ mysql -hxxx.xxx.xxx.110 -uroot -p 

但是当我尝试连接容器到127.0.0.1,它失败:

 sh$ mysql -uroot -p 

已知:

  1. 在容器中,我可以通过以下方式连接mysql服务器:

      sh$ mysql -uroot -p 
  2. 密码没有问题

  3. 同时,我可以通过主机连接127.0.0.1:6376到redis容器….

我只是在猜测,但是Docker容器可能有自己的[pseudo]networking接口。 但是你试图通过主机的回送接口进行连接。 这是两个独立的networking。

请记住,127.0.0.1不只是一个特殊的IP–它是由一个单独的networking接口分配的IP。

您可以configurationDocker来共享主机的networking堆栈; 也许这将是最好的。

请按照以下步骤操作:1.使用iploginmysql并使用“从mysql.user中select主机,用户,密码”; 在命令结果中检查127.0.0.1是否存在; 在这里输入图像说明

2.如果不是请执行授权命令并确保127.0.0.1有权限,然后再次托盘login。

 grant all on *.* to root@'127.0.0.1' identified by 'root'; flush privileges; 

你将要检查你的my.cnfbind-addressconfiguration:

 # # File: my.cnf # [mysqld] bind-address = 192.168.1.100 

在良好的实践中,根据你的使用情况,这应该是127.0.0.1