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

如何通过Cloud IAM将App Engine的.NET应用连接到Cloud SQL MySQL 8.0实例

解决Cloud SQL IAM认证连接错误的步骤

1. 必须启用SSL连接

你当前设置SslMode = MySqlSslMode.None,这直接触发了mysql_clear_password需要安全连接的错误。IAM认证依赖的mysql_clear_password机制强制要求SSL加密连接,所以必须修改SSL模式:

new MySqlConnectionStringBuilder  {    
    Server = "<my internal ip>",    
    Database = MysqlDatabase,   
    UserID = "<App Engine default service account>",    
    SslMode = MySqlSslMode.Required, // 改为Required或Preferred
    // 测试环境可临时添加SslCa=null忽略证书验证,生产环境不建议
}

2. 生成IAM认证令牌作为密码

服务账号没有传统数据库密码,你需要生成短期IAM认证令牌作为连接的Password参数。在.NET中可通过Google Cloud官方库生成:

using Google.Auth.OAuth2;
using System.Threading.Tasks;

public async Task<string> GenerateSqlAuthToken()
{
    var credential = await GoogleCredential.GetApplicationDefaultAsync();
    var scopedCredential = credential.CreateScoped("https://www.googleapis.com/auth/sqlservice.admin");
    var token = await scopedCredential.UnderlyingCredential.GetAccessTokenForRequestAsync();
    return token;
}

将令牌赋值到连接字符串:

var token = await GenerateSqlAuthToken();
var connectionStringBuilder = new MySqlConnectionStringBuilder
{
    Server = "<my internal ip>",
    Database = MysqlDatabase,
    UserID = "<App Engine default service account>",
    SslMode = MySqlSslMode.Required,
    Password = token,
    EnableCleartextPlugin = true
};

3. 启用明文认证插件

你提到找不到enable_cleartext_plugin标志,这个不是Cloud SQL的数据库配置项,而是MySqlConnector的连接参数。直接通过MySqlConnectionStringBuilder的EnableCleartextPlugin属性设为true即可,它会允许使用mysql_clear_password认证方式。

4. 确认VPC连接配置

虽然应用与数据库在同一VPC,但App Engine Flex使用VPC Access Connector时需额外检查:

  • 连接器区域与Cloud SQL实例区域一致(你的配置已符合,均为europe-west3)
  • 连接器IP范围与Cloud SQL的PSA分配范围无冲突
  • 服务账号已拥有roles/vpcaccess.user角色(若未添加需补充)

额外验证点

  • 确认Cloud SQL实例的cloudsql_iam_authentication标志确实为on
  • 确认服务账号已被授权为Cloud SQL实例的IAM用户

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 19:17:34