Google Cloud SQL导入 - 错误:Httperror 403:未授权客户端提出此请求



我尝试使用命令:

导入存储在云存储中的数据库
gcloud sql instances import instance-name gs://connect-to-the-cloud-sql.appspot.com/my-cloud-sql-instance-backup

但是,我遇到了错误:

ERROR: (gcloud.sql.instances.import) HTTPError 403: The client is not authorized to make this request.

我已经登录了:

gcloud auth login

确保实例名称正确。我有同样的错误,一旦我纠正了实例名称,它就会消失。

我遇到了这个问题,我的实例名称是正确的。原来我在错误的GCP项目中。确保切换到正确的[目标]项目或使用项目参数:

gcloud sql instances export my-cloud-sql-instance gs://connect-to-the-cloud-sql.appspot.com/my-cloud-sql-instance-backup --project=<your target project>

在我的情况下,这是因为云SQL实例服务帐户没有我试图从储物存储存储桶上的正确权限。

来自文档:

  1. 描述您导入的实例:

    gcloud sql instances describe [INSTANCE_NAME]
    
  2. 复制serviceAccountEmailAddress字段。

  3. 使用gsutil iamlegacyBucketWriterobjectViewer Cloud IAM角色授予存储帐户。

  4. 导入数据库:

    gcloud sql import sql [INSTANCE_NAME] gs://[BUCKET_NAME]/[IMPORT_FILE_NAME] 
                            --database=[DATABASE_NAME]
    

听起来可能太明显了,但是您的服务帐户实际上可能缺少导入数据的访问权限。检查它是否在IAM&amp;管理页面上安装了正确的cloudsql.instances.import策略。

逐步新的逐步:

gcloud sql instances describe name-instance | grep serviceAccountEmailAddress
# output: serviceAccount:account@gcp-sa.com
gsutil iam ch serviceAccount:account@gcp-sa.com:roles/storage.legacyBucketWriter gs://bucket-destino
gsutil iam ch serviceAccount:account@gcp-sa.com:roles/storage.objectViewer gs://bucket-destino
# -----------en vm linux--gcp------------------------------------------------------------------------------------
gcloud init (id-project-bucket-destino hacer default en vm proyecto de bucket donde se guardara info)
gcloud config set project id-project-bucket-destino
gcloud sql export sql --project=id-project-instance name-instance gs://bucket-destino/sqldump.sql 
--database=name-database 
--offload
# ----------cron job in linux------------------------------------------------------------------------------------
#!/bin/sh
#make directory in Cloud storage
datedirect=$(date '+%d-%m-%Y')
echo $datedirect
touch file5
gsutil cp -r ./file5 gs://bucket-destino/$datedirect/
gcloud config set project id-project-bucket-destino
gcloud sql export sql --project=id-project-instance name-instance gs://bucket-destino/sqldump.sql 
--database=name-database 
--offload

在云控制台中转到IAM&amp;管理&gt;IAM,查找您正在使用的服务帐户,并编辑其角色以添加Cloud SQL客户端和Cloud SQL Admin。如果找不到服务帐户,请使用上述角色使用赠款访问来创建它。

@inostia在另一个答案中提到使用gcloud sql instances describe [INSTANCE_NAME]serviceAccountEmailAddress获取服务帐户。这可能对您有用,但是如果您模仿,例如

gcloud auth application-default login --impersonate-service-account local-development@adstudio-sandbox1.iam.gserviceaccount.com

然后您要使用模仿服务帐户。

最新更新