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

部署在Google Cloud的Node.js应用连接远程MySQL超时问题求助

嘿,这个ETIMEDOUT超时错误我在GCP部署Node.js连接远程MySQL时也踩过坑,基本都是网络层面的问题,咱们一步步来排查解决:

1. 先确认远程MySQL服务器的配置是否允许外部访问
  • 修改MySQL绑定地址:默认情况下MySQL可能只绑定本地回环地址127.0.0.1,拒绝外部连接。你需要编辑MySQL的配置文件(比如/etc/mysql/my.cnf或者/etc/mysql/mysql.conf.d/mysqld.cnf),找到bind-address这一行,改成0.0.0.0(允许所有IP访问)或者指定你的GCP实例公网IP,然后重启MySQL服务:sudo systemctl restart mysql。
  • 检查MySQL用户权限:确保你用来连接的MySQL用户允许从GCP实例的IP访问。执行以下SQL语句:
    GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_username'@'your_gcp_instance_public_ip' IDENTIFIED BY 'your_password';
    FLUSH PRIVILEGES;
    
    这里可以用%代替GCP实例IP来允许该用户从任何IP访问,但出于安全考虑,建议指定具体IP。
2. 检查远程服务器的防火墙规则

远程服务器的防火墙(比如UFW、iptables或者云服务商的防火墙)必须开放3306端口,允许GCP实例的IP访问:

  • 如果用UFW:sudo ufw allow from your_gcp_instance_ip to any port 3306
  • 如果用iptables:sudo iptables -A INPUT -p tcp -s your_gcp_instance_ip --dport 3306 -j ACCEPT,别忘了保存规则。
3. 检查Google Cloud平台的网络配置

GCP这边的网络规则也可能拦住出站流量:

  • 配置VPC防火墙规则:登录GCP控制台,进入「VPC网络」→「防火墙规则」,创建一条新规则:
    • 方向:出站
    • 目标:你的Node.js实例所在的实例组或者特定实例
    • 协议和端口:指定TCP:3306
    • 来源:可以设为0.0.0.0/0(允许所有出站)或者更严格的远程MySQL服务器IP
  • 确认实例有公网IP:如果你的GCP实例只有私有IP,那它无法直接访问公网上的远程MySQL服务器,要么给实例分配公网IP,要么配置VPC peering/VPN连接到远程服务器的私有网络。
4. 先测试网络连通性,再看代码

在GCP实例上用命令行测试能不能连接到远程MySQL的3306端口,这一步能帮你排除网络问题:

  • 用telnet:telnet remote_mysql_public_ip 3306
  • 用nc:nc -zv remote_mysql_public_ip 3306
    如果命令返回连接失败,那先解决网络问题;如果能成功连接,再检查你的Node.js代码:
  • 确认连接配置里的host、user、password、port都没有拼写错误,比如用mysql2模块的示例:
const mysql = require('mysql2');
const conn = mysql.createConnection({
  host: 'remote_mysql_public_ip',
  user: 'your_db_user',
  password: 'your_db_password',
  database: 'your_db_name',
  port: 3306,
  connectTimeout: 15000 // 增加超时时间,避免网络延迟导致的超时
});

conn.connect(err => {
  if (err) {
    console.error('连接失败:', err);
    return;
  }
  console.log('MySQL连接成功!');
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:30:15