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

Google Cloud Run实例无法连接Google Cloud SQL数据库求助

Cloud Run 上的 .NET 6 API 无法连接 Google Cloud SQL MySQL 实例

问题描述

我在 Google Cloud Run 部署了 .NET 6 API 实例,但无法连接关联的 Cloud SQL MySQL 数据库。以下是连接字符串构建及 DbContext 配置代码:

连接字符串构建代码

public static MySqlConnectionStringBuilder ConectionStringBuilder()
{
    var connectionString = new MySqlConnectionStringBuilder()
    {
        SslMode = MySqlSslMode.None,
        Server = "/cloudsql/proyect:region:instance",
        UserID = "user",
        Password = "password",
        Database = "dataBase",
        ConnectionProtocol = MySqlConnectionProtocol.UnixSocket
    };
    connectionString.Pooling = true;
    return connectionString;
}

DbContext 配置代码

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder.LogTo(Console.Write);
    optionsBuilder.EnableSensitiveDataLogging();

    if (!optionsBuilder.IsConfigured)
    {
        MySqlConnectionStringBuilder conn = ConectionStringBuilder();
        optionsBuilder.UseMySQL(conn.ConnectionString);
    }
}

已在 Cloud Run 实例中关联目标 Cloud SQL 数据库,尝试过更换不同实例、跨/同项目部署,问题仍未解决,需排查故障原因。

排查步骤

1. 连接字符串配置校验

  • Socket 路径准确性:确认 Server 字段的 /cloudsql/proyect:region:instance 与 Cloud SQL 实例的连接名称完全匹配(可在实例详情页「连接」标签查看),注意项目ID、区域、实例名的拼写和大小写。
  • SSL 模式修正:Cloud SQL 默认强制要求 SSL 连接,将 SslMode 改为 MySqlSslMode.Required 或 MySqlSslMode.VerifyCA,禁止设置为 None。
  • 连接协议确认:使用 Unix Socket 时,ConnectionProtocol = MySqlConnectionProtocol.UnixSocket 配置正确,无需额外指定端口。

2. Cloud Run 与 Cloud SQL 关联配置检查

  • 服务账号权限:确保 Cloud Run 实例使用的服务账号(默认是 [项目ID]@appspot.gserviceaccount.com)拥有 Cloud SQL Client 角色(roles/cloudsql.client),该角色允许通过 Unix Socket 访问 Cloud SQL。
  • 关联实例正确性:在 Cloud Run 服务的「连接」配置中,确认已正确添加目标 Cloud SQL 实例,且实例处于运行中状态。
  • VPC 连接器验证(若使用):若配置了 VPC 连接器,需确保其关联到 Cloud SQL 所在的 VPC 网络,且网络规则允许 Cloud Run 访问 Cloud SQL 私有 IP。

3. 依赖包兼容性检查

  • EF Core MySQL 驱动版本:确认使用的 Pomelo.EntityFrameworkCore.MySql 或 MySql.EntityFrameworkCore 版本与 .NET 6 兼容,建议使用 Pomelo 6.x 系列等稳定版本。
  • MySQL 客户端版本:检查 MySqlConnector 包版本,确保与驱动版本匹配,避免版本不兼容导致的连接失败。

4. 日志与错误分析

  • 查看 Cloud Run 实例的 Cloud Logging 日志,提取连接失败的具体错误信息(如权限拒绝、Socket 不存在、认证失败等),日志会提供明确的故障指向。
  • 利用代码中已启用的 EnableSensitiveDataLogging() 和 LogTo(Console.Write),输出完整连接字符串及连接过程日志,排查参数配置错误。

5. 数据库端配置检查

  • 用户权限验证:确认 Cloud SQL 中的 user 账号拥有 dataBase 数据库的访问权限,且用户主机配置为 %(允许所有来源,包括 Cloud Run 的 Socket 连接),未被限制为特定 IP。
  • 实例状态确认:确保 Cloud SQL 实例处于运行中,无暂停或维护状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 22:46:03