远程连接Siteground线上MySQL报2003/10061错误问题咨询
故障排查与解决方案
Error: Error while connecting to MYSQL 2003: Can't connect to MySQL server on.... (10061 no connection could be made because the target machine actively refused it)
首先明确错误属性:10061错误代表TCP请求到达目标网络后被直接拒绝,和账号密码错误(对应1045错误)、网络路由不通(对应10060超时错误)无关。结合你已经确认的「参数正确、IP已加白、Colab环境同配置可连通」三个前提,问题一定出在公司网络到数据库的链路拦截、本地配置偏差上,按排查优先级从高到低对应如下:
1. 公司出口防火墙拦截3306端口出站流量
这是企业环境下该问题的最高发诱因:绝大多数公司会在出口防火墙配置安全策略,拦截3306等默认数据库端口的公网出站访问,避免内部数据违规外发。
- 验证方法:
- 公司网络环境下打开命令行,执行
telnet 你的数据库主机地址 3306,如果提示连接失败;切换到个人手机热点(脱离公司网络)执行相同命令可连通,即可确认是该问题。 - 该原因完全匹配你观察到的现象:Colab环境走公网出口无端口限制,所以可以正常连接。
- 公司网络环境下打开命令行,执行
- 解决方法:
- 联系公司IT运维,申请放通对应数据库地址的3306端口出站权限
- 若无法申请端口放通,可在主机后台开启MySQL SSH隧道功能,通过普遍放行的22端口转发数据库流量,在
mysql.connector中配置SSH隧道参数连接即可,无需直连3306端口。
2. 远程连接端口配置错误
Siteground共享主机环境的远程MySQL连接默认不使用3306端口,部分机房会分配3307、3308等独立端口用于远程访问:
- 验证方法:登录主机管理后台,在MySQL远程访问配置页查看官方标注的远程连接端口,核对本地代码中
port参数是否与后台标注一致。 - 交叉验证:如果Colab环境的代码中填写了正确的非默认端口,本地代码漏填
port参数默认走3306,就会稳定触发10061错误。
3. 公司网络多出口NAT导致白名单失效
部分企业网络配置了多出口动态NAT,你查询到的公网IP只是出口池中的单个地址,实际发起连接时出口IP会动态轮换,不在你之前添加的白名单范围内。
- 验证方法:公司网络下连续多次访问公网IP查询页面,若每次显示的出口IP不一致,即可确认是动态NAT问题。
- 解决方法:将公司所有公网出口IP段全部添加到数据库远程访问白名单,或联系IT为你访问数据库的设备配置固定出口IP策略。
4. 本地终端安全策略拦截
公司统一安装的终端安全软件、本地系统防火墙可能会主动拦截Python进程对公网3306端口的访问请求。
- 验证方法:临时退出终端安全软件、关闭本地系统防火墙后重试连接,若可连通即可确认。
- 解决方法:在安全软件、本地防火墙中添加Python程序、对应数据库端口的出站放行规则。
内容的提问来源于stack exchange,提问作者mackabra
相关产品推荐
相关产品推荐

