在Gcloud中导出MySQL数据库表时遇未认证用户错误
问题描述
执行以下gcloud命令将Cloud SQL指定表导出到云存储桶时,持续返回401未授权错误:
gcloud sql export sql databasen gs://my_bucket/file_nam,e.sql --async --database=database--table=table --offload
错误信息:
{ "error": { "code": 401, "message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.", "errors": [ { "message": "Login Required.", "domain": "global", "reason": "required", "location": "Authorization", "locationType": "header" } ], "status": "UNAUTHENTICATED", "details": [ { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "reason": "CREDENTIALS_MISSING", "domain": "googleapis.com", "metadata": { "method": "google.cloud.sql.v1beta4.SqlOperationsService.Get", "service": "sqladmin.googleapis.com" } } ] } }
已完成前置操作:
- 通过
gcloud auth login完成身份验证 - 为SQL实例的服务账号赋予CloudAdmin IAM权限
- 启用所有CloudSQL相关云API
解决方向
1. 修正命令语法错误
你的命令存在多处拼写和格式问题,这些问题可能导致请求异常:
- 实例名
databasen疑似笔误,需替换为正确的Cloud SQL实例ID - 导出文件名
file_nam,e.sql包含多余逗号,改为file_name.sql --database=database--table=table缺少空格,应调整为--database=database --table=table
修正后的示例命令:
gcloud sql export sql YOUR_INSTANCE_ID gs://my_bucket/file_name.sql --async --database=YOUR_DB_NAME --table=YOUR_TABLE_NAME --offload
2. 验证gcloud上下文配置
- 执行
gcloud config list,检查当前配置的账号、项目是否与Cloud SQL实例所属的账号、项目一致 - 若账号不符,执行
gcloud config set account YOUR_VALID_ACCOUNT切换到正确账号;项目不符则执行gcloud config set project YOUR_PROJECT_ID - 可重新执行
gcloud auth login确保身份凭据有效
3. 检查云存储桶权限
- 确认Cloud SQL实例的服务账号(格式一般为
service-PROJECT_NUMBER@gcp-sa-cloudsql.iam.gserviceaccount.com)对目标存储桶拥有storage.objects.create权限,可通过为该账号添加Storage Object CreatorIAM角色实现 - 确保执行gcloud命令的当前账号拥有
storage.buckets.get权限,能正常访问目标存储桶
4. 排查异步命令的权限问题
使用--async参数后,命令会返回操作ID,后续查询状态时可能触发权限问题:
- 可暂时去掉
--async参数执行命令,确认同步执行是否能成功,排除异步流程的权限干扰 - 若需异步执行,执行
gcloud sql operations describe OPERATION_ID时,确保当前账号拥有cloudsql.operations.get权限
5. 刷新身份凭据
执行gcloud auth refresh刷新当前账号的访问令牌,或执行gcloud auth application-default login重新获取应用默认凭据,避免令牌过期导致的授权失败
内容的提问来源于stack exchange,提问作者Clay Campbell
相关产品推荐
相关产品推荐

