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

时间:2016-01-07 12:58:05

标签: mysql docker

在我的个人电脑中,有一个与端口3306绑定的docker mysql容器。它运行良好。 我可以通过另一台PC连接此容器中的mysql服务器。

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

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

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容器....

3 个答案:

答案 0 :(得分:2)

我只是推测,但Docker容器可能有自己的[伪]网络接口。但是你试图通过主机的环回接口进行连接。这是两个独立的网络。

请记住,127.0.0.1不仅仅是一个特殊的IP - 它是由单独的网络接口分配的IP。

您可以将Docker配置为共享主机的网络堆栈;也许那里最好。

答案 1 :(得分:0)

请尝试按照以下步骤操作: 1.使用ip登录mysql并使用"从mysql.user中选择主机,用户,密码;"在命令结果中检查127.0.0.1是否存在; enter image description here

2.如果不执行grant命令并确保127.0.0.1具有权限,则再次托盘登录。

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

答案 2 :(得分:-1)

您需要检查my.cnf bind-address配置:

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

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