簡體   English   中英

Google Cloud SQL 導入 - 錯誤:HTTPError 403:客戶端無權發出此請求

[英]Google Cloud SQL import - ERROR: HTTPError 403: The client is not authorized to make this request

我嘗試使用以下命令導入存儲在 Cloud Storage 中的數據庫:

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 項目中。 確保切換到正確的 [target] 項目或使用 project 參數:

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 iamlegacyBucketWriter objectViewer的服務帳號授予legacyBucketWriterobjectViewer Cloud IAM 角色。

  4. 導入數據庫:

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

這聽起來可能太明顯了,但您的服務帳戶確實可能缺少導入數據的訪問權限。 檢查它是否在 IAM&Admin 頁面上安裝了正確的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM