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

GCP平台App Engine部署的Node.js应用无法连接Cloud SQL问题求助

GAE 部署 Node.js 应用连接 Cloud SQL 失败排查方案

1. 连接方式适配问题说明

  • 本地开发时将本地公网IP加入Cloud SQL白名单后可通过公网IP连接,是因为本地出口IP固定。部署在Google App Engine的应用默认出口IP是动态的,无法通过固定白名单实现公网IP连接,官方推荐使用Unix套接字方式连接Cloud SQL,连接更稳定且不需要配置IP白名单。
  • 你当前代码中注释了套接字配置,直接使用公网IP作为host,是连接失败的核心原因。

2. 连接配置修改步骤

第一步:配置app.yaml授权Cloud SQL实例

在你的GAE部署配置文件app.yaml中添加以下配置,授权应用访问对应Cloud SQL实例:

beta_settings:
  cloud_sql_instances: "google.com:ethereal-honor-206415:us-central1:arcade"

第二步:修改数据库连接代码

注释掉host、port参数,放开socketPath配置,同时修正连接回调的参数命名(原参数名connect容易混淆,实际是错误对象),修改后代码如下:

const mysql = require('mysql');

const dbConnection = mysql.createConnection({
    user: 'admin',
    password: 'admin@123',
    database: 'arcade',
    socketPath:'/cloudsql/google.com:ethereal-honor-206415:us-central1:arcade'
});

dbConnection.connect(err=>{
    if(err) {
      console.error('数据库连接失败,错误信息:', err)
      return
    }
    console.log('数据库连接成功')
}); 

exports.dbConnection = dbConnection;

3. 权限校验

  • 确认GAE默认服务账号 [你的GCP项目ID]@appspot.gserviceaccount.com 已被授予Cloud SQL 客户端角色,缺少该权限会导致套接字连接被拒绝。
  • 确认数据库账号admin已授权localhost访问权限,可通过以下SQL语句授权:
    GRANT ALL PRIVILEGES ON arcade.* TO 'admin'@'localhost';

4. 错误日志排查

如果修改配置后仍连接失败,查看GAE运行日志中的错误信息快速定位问题:

  • 错误为connect ENOENT:说明socketPath配置错误,或app.yaml中未正确配置cloud_sql_instances参数
  • 错误为Access denied:说明数据库账号密码错误,或账号权限配置不正确
  • 错误为ETIMEDOUT:说明网络连通性异常,优先检查连接方式和项目权限配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:57:03