You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VMware中CentOS7虚拟机Docker部署MySQL远程连接报错排查求助

排查MySQL远程连接错误 lost connection to server at 'handshake: reading initial communication packet', system error: 60

以下是分步排查方案:

1. 核对VMware NAT端口映射配置

  • 打开VMware「虚拟网络编辑器」,选中NAT模式网卡(通常为VMnet8),进入「NAT设置」
  • 确认端口映射规则:主机端口(如3306)需映射到虚拟机实际IP的对应端口(即Docker容器映射到宿主机的端口,比如3306)
  • 用虚拟机内的ip addr命令查看当前IP,确保规则中的虚拟机IP与实际一致(避免DHCP动态分配导致IP变更)

2. 检查CentOS7防火墙与SELinux拦截

  • 防火墙排查:
    • 临时关闭防火墙测试:systemctl stop firewalld,若连接恢复,说明是防火墙拦截,需添加永久放行规则:
      firewall-cmd --add-port=3306/tcp --permanent
      firewall-cmd --reload
      
    • 用firewall-cmd --list-all查看当前规则,确认目标端口已在放行列表中
  • SELinux排查:
    • 临时关闭测试:setenforce 0,若连接成功,可修改SELinux配置为宽容模式:编辑/etc/selinux/config,将SELINUX=enforcing改为SELINUX=permissive,重启虚拟机生效

3. 验证Docker容器的MySQL配置

  • 启动参数检查:
    确保容器启动时绑定了所有网卡,docker-compose.yml或启动命令需包含--bind-address=0.0.0.0,或在容器内的my.cnf中配置bind-address = 0.0.0.0(避免仅绑定127.0.0.1导致无法远程访问)
  • 远程用户权限:
    进入MySQL容器,创建并授权远程访问用户:
    CREATE USER 'your_user'@'%' IDENTIFIED BY 'your_password';
    GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'%';
    FLUSH PRIVILEGES;
    
  • 容器日志与端口映射:
    • 查看容器日志排查异常:docker logs <mysql-container-name>
    • 确认Docker端口映射正确:如-p 3306:3306,确保容器内3306端口映射到了虚拟机的3306端口

4. 分层连通性测试

  • 虚拟机内部测试:在CentOS中执行mysql -h 127.0.0.1 -P 3306 -u your_user -p,若连不上,优先排查容器内MySQL的配置问题
  • 宿主机到虚拟机连通性:在本地宿主机执行ping <虚拟机IP>,若不通,检查VMware虚拟网络编辑器的DHCP、NAT设置是否正常
  • 端口可达性测试:用telnet <虚拟机IP> 3306或nc -zv <虚拟机IP> 3306测试端口,若不通,回到防火墙、端口映射步骤重新排查

5. 客户端连接参数校验

  • 客户端需使用宿主机IP(或localhost) + NAT映射的主机端口连接,而非虚拟机IP和端口
  • 例如:若NAT映射规则是主机3307→虚拟机3306,客户端连接地址应为localhost:3307或<宿主机公网/局域网IP>:3307
  • 强制客户端使用TCP/IP连接模式,避免默认的socket连接(部分客户端会自动选择socket导致失败)

内容的提问来源于stack exchange,提问作者sopp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 16:07:08