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

GCP中cloud_sql_proxy报invalid_grant错误(权限齐全)如何调试?

问题排查:Cloud SQL Proxy 连接时出现 invalid_grant 错误

问题场景

我们在GCP环境使用谷歌账号(非服务账号)连接Cloud SQL,无IP限制等特殊配置。我执行cloud_sql_proxy <project>:<region>:<database> -p 5435可正常连接,但同事执行相同命令时出现以下错误:

failed to connect to instance: failed to get instance: Refresh error: failed to get instance metadata (connection name = "<project>:<region>:<database>"):
 Get "https://sqladmin.googleapis.com/sql/v1beta4/projects/<project>/instances/<database>/connectSettings?alt=json&prettyPrint=false": auth: "invalid_grant" "Bad Request"

已完成的测试

  • 同事账号已配置Cloud SQL Admin权限,拥有所有必要权限
  • Cloud SQL Proxy已更新至最新版本
  • 通过gcloud auth list确认同事的GCP账号已认证、激活且为当前唯一账号
  • 用gcloud auth print-access-token获取令牌后,通过cloud_sql_proxy --token=...可正常连接,说明账号本身无问题,但Proxy默认未使用该账号
  • 未设置GOOGLE_APPLICATION_CREDENTIALS环境变量

新增排查点

  1. 检查应用默认凭据状态
    执行gcloud auth application-default print-access-token,如果返回错误或过期令牌,说明应用默认凭据未正确关联同事账号。执行gcloud auth application-default login重新生成凭据后,再尝试启动Proxy。

  2. 验证凭据权限范围
    执行gcloud auth list --format="value(scopes)",确认凭据是否包含https://www.googleapis.com/auth/sqlservice.admin或https://www.googleapis.com/auth/cloud-platform全范围权限。如果缺少,重新登录时指定范围:

    gcloud auth login --scope=https://www.googleapis.com/auth/sqlservice.admin,https://www.googleapis.com/auth/cloud-platform
    
  3. 清除gcloud凭据缓存
    手动删除gcloud的凭据缓存文件,重新生成凭据:

    • Linux/macOS:删除~/.config/gcloud/credentials.db和~/.config/gcloud/application_default_credentials.json
    • Windows:删除%APPDATA%\gcloud\credentials.db和%APPDATA%\gcloud\application_default_credentials.json
      之后重新执行gcloud auth login和gcloud auth application-default login
  4. 排查环境变量冲突
    执行env | grep GOOGLE和env | grep CLOUD,检查是否存在异常环境变量(如CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE、GOOGLE_CLOUD_PROJECT等)干扰凭据加载。

  5. 显式指定凭据文件启动Proxy
    启动Proxy时直接指定应用默认凭据路径,验证是否是加载路径问题:

    cloud_sql_proxy --credential_file="$HOME/.config/gcloud/application_default_credentials.json" <project>:<region>:<database> -p 5435
    

如何获取更详细的Proxy日志

使用-verbose结合-log_debug参数,输出认证流程和API调用的细节日志:

cloud_sql_proxy -verbose -log_debug <project>:<region>:<database> -p 5435

Linux/macOS系统可将日志重定向到文件便于分析:

cloud_sql_proxy -verbose -log_debug <project>:<region>:<database> -p 5435 > proxy_debug.log 2>&1

重点关注日志中的凭据加载步骤和令牌刷新请求细节,确认是否加载了正确的凭据,以及刷新令牌时的请求响应内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 16:20:11