求助:cloud_sql_proxy重启后用凭据文件而非gcloud auth登录致403
解决cloud_sql_proxy改用gcloud auth登录凭据的问题
核心原因
cloud_sql_proxy会按以下优先级选择凭据:
- 命令行
--credential_file指定的文件 GOOGLE_APPLICATION_CREDENTIALS环境变量指向的文件- 应用默认凭据(
gcloud auth application-default login生成) - gcloud用户凭据(
gcloud auth login生成)
你的情况是代理优先找到了某个服务账号凭据文件,所以需要屏蔽这些优先级更高的凭据来源。
具体解决步骤
清除环境变量影响
先检查是否设置了GOOGLE_APPLICATION_CREDENTIALS:echo $GOOGLE_APPLICATION_CREDENTIALS如果输出有文件路径,临时清除该变量:
unset GOOGLE_APPLICATION_CREDENTIALS若要永久生效,删除shell配置文件(如
~/.bashrc、~/.zshrc)中对应的export GOOGLE_APPLICATION_CREDENTIALS=xxx行。强制代理使用gcloud用户凭据
启动代理时添加--credential_file=""参数,强制忽略凭据文件,转而使用gcloud登录的用户凭据:cloud_sql_proxy --instances=instance:region:orcadb=tcp:54321 --credential_file=""也可以直接指定gcloud当前登录的账号:
cloud_sql_proxy --instances=instance:region:orcadb=tcp:54321 --user=$(gcloud config get-value account)刷新应用默认凭据(可选)
如果上述方法无效,执行以下命令生成用户级别的应用默认凭据,代理也会自动识别:gcloud auth application-default login
内容的提问来源于stack exchange,提问作者chlo2622
相关产品推荐
相关产品推荐

