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

Firebase Functions连接Google Cloud SQL MySQL报ECONNREFUSED错误

问题根因
  • 配置冲突:当前配置同时声明了host: "127.0.0.1"和socketPath参数,Sequelize底层依赖的mysql2驱动会优先读取host参数走TCP连接,直接忽略socketPath配置。而Firebase Functions运行环境中127.0.0.1并没有监听MySQL服务,连接会被直接拒绝。
  • 未绑定Cloud SQL实例:部署Functions时如果没有显式关联目标Cloud SQL实例,运行时不会自动生成/cloudsql/[实例连接名]对应的Unix Socket文件,配置的socketPath实际不存在,连接自然失败。
  • 配置加载错误:贴出的配置是development节点的内容,Firebase Functions部署后默认运行环境是production,若未手动指定NODE_ENV,服务根本不会加载这段带socketPath的配置,会默认走本地连接逻辑。
  • 权限/服务未启用:未开启Cloud SQL Admin API,或者Functions默认服务账号没有Cloud SQL连接权限,会导致运行时无法创建Unix Socket连接通道。
修复方案

按顺序检查调整即可:

  1. 修正Sequelize配置,给线上环境单独写production节点配置,删掉host字段,只保留socketPath配置,参考如下:
{
  "development": {
    "username": "root",
    "password": "本地库密码",
    "database": "本地库名",
    "host": "127.0.0.1",
    "dialect": "mysql"
  },
  "production": {
    "username": "root",
    "password": "线上库实际密码",
    "database": "线上库名",
    "dialect": "mysql",
    "dialectOptions": {
      "socketPath": "/cloudsql/CloudSQL实例完整连接名"
    }
  }
}

注意:Cloud SQL实例连接名格式为项目ID:实例所在区域:实例ID,直接去Cloud SQL控制台实例详情页复制即可,不要手敲避免输错。
2. 部署时给Functions绑定目标Cloud SQL实例,二选一操作:

  • CLI部署时追加参数:firebase deploy --only functions --run-connect-cloud-sql-instances=projects/你的项目ID/locations/实例区域/instances/实例ID
  • 进入Firebase控制台对应Functions的配置页,在「安全和网络」板块找到「已连接的Cloud SQL实例」选项,手动选中要连接的实例后保存重新部署。
  1. 配置环境变量,在Functions的环境配置中添加NODE_ENV: production,确保服务启动时加载正确的production节点数据库配置。
  2. 检查前置依赖:
    • 确认已启用Cloud SQL Admin API
    • 确认Functions默认服务账号(格式为<你的项目ID>@appspot.gserviceaccount.com)已绑定Cloud SQL Client的IAM角色,没有的话手动在IAM配置页添加。
  3. 本地调试注意:/cloudsql/路径的Unix Socket只有部署到Firebase/GCP线上运行时才会自动生成,本地用模拟器测试时要么安装Cloud SQL代理走TCP连接本地端口,要么直接连测试库的公网地址,不要用线上的socketPath配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:48:15