开启VPN后无法连接MySQL Docker的问题求助
Docker MySQL开启Sonicwall NetExtender VPN后无法连接的解决方法
排查与修复步骤
- 确认端口绑定状态
执行netstat -tulpn | grep 3306,查看3306端口的监听地址。如果显示为127.0.0.1:3306,说明MySQL仅绑定了本地回环地址,VPN路由可能干扰了本地访问。修改容器内的MySQL配置文件(通常是/etc/mysql/my.cnf或对应路径),将bind-address设置为0.0.0.0,然后重启容器。 - 切换Docker网络模式
默认的bridge模式下,VPN可能修改主机路由表导致容器网络不通。尝试使用host模式启动容器,让容器直接复用主机网络:docker run --network host -d [你的MySQL镜像名] - 检查路由表冲突
对比VPN开启前后的ip route输出,查看是否有路由规则将127.0.0.0/8段流量导向VPN接口。如果存在这类规则,添加静态路由强制本地回环流量走lo网卡:sudo ip route add 127.0.0.1/32 dev lo - 验证容器内部服务状态
进入容器内部确认MySQL服务本身正常运行:
如果容器内可以正常连接,说明问题出在主机到容器的网络路由环节。docker exec -it [容器ID/名称] mysql -uroot -p - 检查防火墙规则
VPN开启可能触发Ubuntu的ufw防火墙规则变更,执行sudo ufw status查看是否有规则拦截3306端口的本地访问,必要时添加允许规则:sudo ufw allow from 127.0.0.1 to any port 3306
内容的提问来源于stack exchange,提问作者user3309305
相关产品推荐
相关产品推荐

