在我的个人电脑中,有一个与端口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
已知:
在容器中,我可以通过以下方式连接mysql服务器:
sh$ mysql -uroot -p
密码没有问题
同时,我可以通过主机将127.0.0.1:6376连接到redis容器....
答案 0 :(得分:2)
我只是推测,但Docker容器可能有自己的[伪]网络接口。但是你试图通过主机的环回接口进行连接。这是两个独立的网络。
请记住,127.0.0.1不仅仅是一个特殊的IP - 它是由单独的网络接口分配的IP。
您可以将Docker配置为共享主机的网络堆栈;也许那里最好。
答案 1 :(得分:0)
请尝试按照以下步骤操作: 1.使用ip登录mysql并使用"从mysql.user中选择主机,用户,密码;"在命令结果中检查127.0.0.1是否存在;
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
。