1、创建实例命令,
2、查看启动的实例 docker ps,
,
3、这里映射的是宿主机的3306端口,我已经把端口开放了,
,
4、在宿主机进行连接,
,#这个报错像是mysql不存在,查看mysql是否启动,
,#mysql已启动,端口也没有被占用,
5、已经在容器里面测试了,mysql可以正常连接;在试试将root用户开放可以任何主机访问,5.1、进入容器,并连接mysql,5.2、将root用户开放所有主机可以访问,
6、在宿主进再次进行连接测试,
,#还是不行!!!,
7、去百度了一下,觉得是宿主机的路由没有开启,来试试看,#一圈回来,发现问题出在宿主机,因为如果要使用mysql命令,就是必须要/usr/bin/目录下有这个命令。但是我是docker安装mysql所以,宿主机不能使用mysql连接docker的数据库,使用远程工具navicat连接时报的错,应该是root用户没有开启,任何主机可以访问的权限。由于上面已经开了,我现在测试navicat是可以远程连接的,
,
8、上面说到了一个宿主机路由的问题,我们路由没开的话就会导致宿主机于容器实例网络隔绝,所以是要打开的。,8.1、查看路由是否打开,
,#返回值为1代表路由已开启,为0就是未开启,8.2、开启路由,
补充:Docker里的Mysql无法连接,连接一段时间超时。ERROR 2013 (HY000): Lost connection to MySQL server at,尝试使用命令行连接,如果报错:,请重启docker服务,然后再次启动容器,如果不是这种报错,请检查Mysql版本,如果为8.0及以上版本;需要注意,该版本密码认证机制已经升级,有些客户端未能兼容,请使用新的认证方式修改Mysql密码,还有就是,所登录的用户是否允许任意主机连接,仅允许本地连接:root@localhost,允许任意连接:root@%,如果发现为:
root@localhost
,不要直接修改此表,可以新建一个用户,并赋予权限,
总结