navicat无法远程连接docker安装的mysql的解决方案、mysql无法远程连接的解决思路、mysql无法连接的原因分析

写在前面

场景中涉及到的机器列表:

机器

备注

机器GR2_Win10

个人电脑2,安装了windows10操作系统机器k8s-master-1这是在机器GR2_Win10 上通过Vmware软件实现的虚拟机
vmware上安装了centos7操作系统
centos7上安装docker
docker里安装了禅道系统(版本为12.3.3)
机器ip地址为192.168.152.100

场景:

禅道系统(版本为12.3.3)内置的mysql数据库的端口号3306和宿主机机器k8s-master-1的端口号13306做了映射

需求:

机器GR2_Win10上的navicat软件无法连接禅道系统(版本为12.3.3)内置的mysql数据库

连接的时候报两种错误

错误1:

错误2:

请找出错误原因并解决

步骤一、能否ping通机器k8s-master-1

  • 第1步:打开你的cmd窗口
  • 第2步:执行ping命令,看下能否ping通
C:\Users\fenglv>ping 192.168.152.100

正在 Ping 192.168.152.100 具有 32 字节的数据:
来自 192.168.152.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.152.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.152.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.152.100 的回复: 字节=32 时间<1ms TTL=64

192.168.152.100 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 0ms,平均 = 0ms

如果看到有TTL字样,类似上面的输出内容,说明是可以ping通的,直接跳到步骤二

如果不能ping通,那就要想办法先解决ping通的问题,问题解决之后跳到步骤二

步骤二、执行telnet命令看下能否连接上机器k8s-master-1的13306端口号

  • 第1步:打开机器GR2_Win10的cmd窗口
  • 第2步:执行telnet命令,看下能否连接上
C:\Users\fenglv>telnet 192.168.152.100 13306

如果看到的结果如下,说明无法连接上,继续看步骤三

步骤三、查看机器k8s-master-1的iptables相关情况及监听端口号

执行命令sudo iptables -n -L -v | grep DOCKER -C 5查看映射的端口号是否已经添加到iptables的放行规则中,如果看到类似下面的结果,说明已经已经添加了。

请注意,docker容器在端口映射时,会自动把映射的宿主机的端口添加到iptables的放行规则中,所以我们可以直接telnet到宿主机的端口。

执行命令sudo netstat -tunpl查看监听的端口号中是否监听了13306端口:<

当在docker容器中的mysql使用navicat远程连接显示timeout时,可以尝试以下方法解决: ### 检查容器端口映射 要保证容器内的MySQL端口正确映射到宿主机上。可查看容器运行时的端口映射情况,若没有正确映射,需重新创建容器并指定正确的端口映射。示例命令如下: ```bash docker run -di --name=mysql8 -p 33306:3306 -v /db/mysql8.0.26/conf/my.cnf:/etc/mysql/my.cnf -v /db/mysql8.0.26/data:/var/lib/mysql -v /db/mysql8.0.26/log:/var/log/mysql -e MYSQL_ROOT_PASSWORD=root mysql:8.0.26 ``` 这里将容器内的3306端口映射到了宿主机的33306端口 [^1]。 ### 检查防火墙设置 要确保宿主机的防火墙允许外部访问映射的端口。以CentOS系统为例,可使用以下命令开放端口: ```bash firewall-cmd --zone=public --add-port=33306/tcp --permanent firewall-cmd --reload ``` ### 检查MySQL配置 进入MySQL容器,修改MySQL配置文件`my.cnf`,确保MySQL监听所有可用的网络接口。在`my.cnf`中添加或修改以下配置: ```ini [mysqld] bind-address = 0.0.0.0 ``` 修改完成后,重启MySQL容器: ```bash docker restart mysql8 ``` ### 检查MySQL用户权限 要确保MySQL用户具有远程访问的权限。可使用以下命令登录到MySQL容器内的MySQL服务: ```bash docker exec -it mysql8 mysql -uroot -proot ``` 然后执行以下SQL语句为用户授予远程访问权限: ```sql CREATE USER 'your_user'@'%' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` ### 检查Navicat连接配置 要确保Navicat中的连接配置正确,包括主机名、端口、用户名和密码。主机名应填写宿主机的IP地址,端口填写映射到宿主机的端口。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值