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~可以了
在这里插入图片描述
删掉刚刚新创建的容器,收工!

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值