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

如何连接服务器远程数据库?连接时持续出现ETIMEDOUT错误求助

解决远程MySQL连接ETIMEDOUT问题
  • 检查服务器防火墙/安全组规则
    ETIMEDOUT的核心原因是连接请求无法抵达目标服务器,优先确认:

    • 云服务器的安全组是否开放3306端口(MySQL默认端口),并允许你的客户端IP地址访问;
    • 服务器本地防火墙(如iptables、ufw)是否放行3306端口的入站请求。
  • 验证网络可达性与端口开放状态
    用命令行直接测试网络连通性:

    • 测试IP连通:ping 43.138.209.122
    • 测试端口开放:telnet 43.138.209.122 3306 或 nc -zv 43.138.209.122 3306
      如果这两步失败,问题出在网络层面,和代码无关。
  • 确认MySQL允许远程连接配置
    登录服务器端的MySQL,执行以下操作:

    1. 检查root用户的访问权限:
      SELECT host, user FROM mysql.user WHERE user='root';
      
      如果host列仅为localhost或127.0.0.1,说明root仅允许本地访问,需要授权远程访问:
      GRANT ALL PRIVILEGES ON ltest.* TO 'root'@'你的客户端IP' IDENTIFIED BY '你的数据库密码';
      FLUSH PRIVILEGES;
      
    2. 检查MySQL配置文件(my.cnf/my.ini)中的bind-address参数,确保设置为0.0.0.0(允许所有IP访问),而非127.0.0.1,修改后重启MySQL服务。
  • 完善代码连接参数
    你的代码未指定端口和超时时间,可补充参数排除配置问题:

var pool=mysql.createPool({
    host:'43.138.209.122',
    user:'root',
    password:'xxxxxxxx',
    database:'ltest',
    port: 3306, // 明确指定端口,若服务器修改过端口则替换为对应值
    connectTimeout: 10000 // 设置10秒连接超时,便于排查
});
  • 排查本地网络限制
    确认本地网络的防火墙、代理或VPN未拦截3306端口的出站请求,可尝试切换网络(如手机热点)重新测试连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 04:08:16