Windows Navicat 连接Docker的MySQL报错2003,10060 “Unknown error“

一、背景

之前我都装好的docker并运行了MySQL容器,还使用navicat连上了docker中的MySQL并创建了数据库,一阵子不使用Windows了,转去用了MacOS,再回到Windows电脑上操作发现navicat连不上数据库了,报错截图如下。

(因为我问题已经解决了,找不到报错图了,这张图是抄别人的复现一下错误的样子)
​​​​​​在这里插入图片描述

二、我尝试了哪些工作

  1. 我进入到容器中使用 mysql -uroot -p 执行登录到MySQL发现可行,但是使用外部的连接到Docker MySQL不可行,因此猜测问题的本身不在容器内部。
  2. 百度到网上给出的大多数方案都是使用控制台登录到MySQL中,查询什么root用户是不是%(允许所有ip连接),然后配置什么权限,修改密码,刷新权限,虽然知道大概率不可能解决问题,还是尝试了一下,最后效果确实是没能解决。
  3. 然后看到网上说的尝试的是看看docker机器的ip(因为我的Windows是模拟的一台Linux出来,好像叫做WLS什么的东西,然后提供给DockerDesktop使用的),我就进入到这台Linux机器通过ifconfig查看其机器的ip,尝试在navicat中将ip地址填写为这个ip,还是不行!此时我已经满嘴脏话~
  4. 再到后面不信邪,我又检查了一遍端口映射,确实是3306映射到外部3306,我就不信了,我关掉你原来的MySQL容器重新跑一个起来不行吗,然后我又熟练地使用了那一套命令(忽略挂载目录):
docker run -p 3306:3306 --name mysql8 -e MYSQL_ROOT_PASSWORD=123456  -d mysql

此时发现,我去,容器都跑不起来了,我内心一阵惊讶~
报错信息大概如下:

Ports are not available: exposing port TCP 0.0.0.0:xxxxx -> 0.0.0.0:0:
listen tcp 0.0.0.0:xxxxx: bind: An attempt was made to access a socket
in a way forbidden by its access permissions.

然后我回去尝试着启动原来关闭了的容器,发现也启动不起来了。好了,百度这个错误。

三、解决

基于上面出现的端口不可用的原因,搜索引擎找到的方案是
重启winnat

  • 操作步骤:
  1. 以管理员身份运行PowerShell
  2. 停止winnat
net stop winnat
  1. 启动winnat
 net start winnat

然后我再回去运行我的容器,居然活了!

到navicat中连接我的MySQL,wow~可以了
在这里插入图片描述
删掉刚刚新创建的容器,收工!

猜你喜欢

转载自blog.csdn.net/qq_17229141/article/details/126478908