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

在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:15:34