虚拟机docker 创建mysql容器远程连接不了

图片说明
如图进入容器内部,admin root wang这三个账户都连接不了
虚拟机的防火墙也已经关了,实在不知道怎么回事啊,删了这个容器,从新建立一个就可以连,但是关机后就又连不了了,扎心,求大神解惑

https://blog.csdn.net/weixin_34357436/article/details/92188037

我感觉是你防火墙的问题吧。首先要知道,容器是通过iptables的路由转发功能来实现到宿主机的端口映射的,这个在创建容器的时候会自动添加临时的iptables规则来实现容器和宿主机之间的映射通道。
你把防火墙关了,就是关闭了容器和宿主机之间的这个通道,所以就没法直接通过宿主机来连接容器内部的服务了。然后你新创建了容器,这个iptables规则又重新生成了,所以你就又可以正常连接。
其次是这个iptables规则是临时生效的,你若重启了宿主机,iptables规则会消失,这时候你也会出现连接不上容器服务。
另外mysql中,同一个用户,比如你的admin用户,在host列最好不要同时有localhost和%这两个规则,因为有时候localhost会覆盖掉%权限,也就是你虽然有了%授权,但还是只能本机登录。当你添加了%授权以后,最好就删除localhost这一行。root用户默认就是只允许本机登录的,这是为了安全考虑,也不推荐添加%授权。