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

更换网站托管方案后MySQL远程连接失败,报错Can't connect to MySQL server on 'x.x.x.x' (113)

解决远程MySQL连接报错Can't connect to MySQL server on 'x.x.x.x' (113)

首先得明确:错误码113本质是网络层面的连接无法到达/被拒绝,不是你的MySQL账号权限问题(毕竟之前完全正常,换托管后才出问题),咱们一步步排查:

  • 先排查新网站托管环境的出站防火墙/安全组
    很多托管商的默认配置会限制对外的端口连接,尤其是MySQL默认的3306端口。你可以在网站服务器上执行这两个命令测试连通性:

    telnet x.x.x.x 3306
    # 或者用nc(如果安装了的话)
    nc -zv x.x.x.x 3306
    

    如果命令返回连接失败,那肯定是新主机的出站规则把3306端口给禁了。要么去托管商的控制面板手动添加允许访问VPS IP和3306端口的规则,要么联系客服开权限。

  • 检查VPS的入站防火墙/安全组
    虽然之前正常,但难保VPS的防火墙规则被误改了,或者新网站服务器的公网IP不在允许列表里。

    • 如果是用ufw(Ubuntu/Debian常用),执行ufw status看看有没有允许3306端口的入站规则;
    • 如果是iptables,执行iptables -L -n过滤3306相关规则;
    • 如果是云服务商的安全组(比如阿里云、AWS),去控制台确认是否允许新网站IP访问3306,或者是否还保持着允许所有IP(对应你设置的'myuser'@'%')的规则。
  • 确认MySQL的绑定IP配置
    有时候VPS上的MySQL配置文件(my.cnf或my.ini)里的bind-address会被改成127.0.0.1,这样就只能本地访问。你可以:

    1. 找到配置文件(通常在/etc/mysql/my.cnf或者/etc/mysql/mysql.conf.d/mysqld.cnf);
    2. 查看bind-address的值,改成0.0.0.0(允许所有IP连接);
    3. 重启MySQL服务:systemctl restart mysql(Ubuntu/Debian)或service mysqld restart(CentOS)。
  • 核对VPS的公网IP是否正确
    别笑,这个真的容易忽略!有没有可能VPS的公网IP换了?你代码里的$servername还是旧的IP?直接ping一下VPS的域名(如果有的话),或者登录VPS查一下当前公网IP,确保和代码里的一致。

  • 检查托管商的方案限制
    有些低价托管方案会限制对外的数据库连接,尤其是远程MySQL,可能是出于安全或资源管控。你可以翻一下托管商的官方文档,或者直接问客服:当前方案是否允许出站连接到外部的3306端口?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:56:42