![](/img/trans.png)
[英]The client is not authorized to make this request -- while trying to get google cloud sql instance by java
[英]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 實例服務帳戶對我嘗試從中導入的存儲桶沒有正確的權限。
從文檔:
描述您要導入的實例:
gcloud sql instances describe [INSTANCE_NAME]
復制serviceAccountEmailAddress
字段。
使用gsutil iam
向legacyBucketWriter
objectViewer
的服務帳號授予legacyBucketWriter
和objectViewer
Cloud IAM 角色。
導入數據庫:
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.