navicat连接docker中的mysql(1006010061错误)

it2023-02-25  78

问题描述

docker pull mysql:5.7 获得所需版本的数据库镜像 docker run -itd --name XXX -p 3306:3306 -e MYSQL_ROOT_PASSWOD=123456 -d mysql:5.7 创建mysql容器XXX docker ps 能看到XXX,说明其已正确运行了

但是navicat连接时一直报10061错误,如图:

百度一波,一般如下:

1 mysql服务没启动 mysql建立在容器中,虽然本质上来说,默认容器也是linux,但是docker ps显示有该容器即证明已经成功启动。 2 密码问题/mysql问题 docker exec -it XXX bash 进入容器 mysql -u root -p 能成功进入MySQL,即可排除 3 MySQL权限问题 需要grant远程权限什么的,尝试无果。 4 端口问题 其实如果mysql在docker容器中,而不是自己装的系统,是不会有这个问题的。当然也可以再在系统中确定一下。

问题解决

在容器中能正常运行mysql,说明mysql本身是没有问题的。 问题就在window连docker(default)这个过程,或者docker(default linux系统)到MySQL这个过程。如之前所说,后者一般不会有什么问题。 所以最大的可能是window上的navicat并没有连上docker。 首先想到是和之前的软件兼容的问题,换了电脑依然没有解决。 留意到,安装docker toolbox后ipconfig多了两个地址,如下: 在docker中netstat查看ip,显示如下: 猜想window通过192.168.99.100和docker的192.168.99.1产生联系,我们连接192.168.99.100就相当于连上了docker。 尝试成功。(忽略图中细节,3308是新建的另一个容器端口)

PS:朋友在mac上直接localhost或127.0.0.1就能连接成功,加上各种帖子没有提过类似解决方案,所以导致一开始方向走错,困了两天。可能是因为系统差异,未深究,仅供参考。

最新回复(0)