【问题标题】:Google Cloud SQL import from bucket : error 403从存储桶导入 Google Cloud SQL:错误 403
【发布时间】:2020-06-17 22:04:49
【问题描述】:

我想将 sql 数据导入我的 Cloud SQL 数据库(名为“db2”)。 因此,我已将一个 sql 文件上传到我的存储桶中。 然后我转到我的 Cloud SQL 数据库并单击“与 Cloud Shell 连接”。 尝试通过 CloudShell 导入时,我得到:

info@cloudshell:~ (servers)$ gcloud sql import sql db2 gs://mybucket/db.sql
Data from [gs://mybucket/db.sql] will be imported to [db2].
Do you want to continue (Y/n)?  Y
ERROR: (gcloud.sql.import.sql) HTTPError 403: The service account does not have the required permissions for the bucket.

我已经按照这里给出的相同问题的解决方案:https://stackoverflow.com/a/53608811/2795648 但这对我不起作用。

我的 Cloud SQL 数据库的服务帐户拥有我可以对存储桶和文件授予的所有权限(不是必须的)。

添加了一些额外信息。以下是服务帐号的权限:

- members:
  - serviceAccount:p3998516xxxxx-p9q5dn@gcp-sa-cloud-sql.iam.gserviceaccount.com
  role: roles/storage.admin
- members:
  - serviceAccount:p3998516xxxxx-p9q5dn@gcp-sa-cloud-sql.iam.gserviceaccount.com
  role: roles/storage.objectAdmin
- members:
  - serviceAccount:p3998516xxxxx-p9q5dn@gcp-sa-cloud-sql.iam.gserviceaccount.com
  role: roles/storage.objectCreator
- members:
  - serviceAccount:p3998516xxxxx-p9q5dn@gcp-sa-cloud-sql.iam.gserviceaccount.com
  role: roles/storage.objectViewer
- members:
  - serviceAccount:p3998516xxxxx-p9q5dn@gcp-sa-cloud-sql.iam.gserviceaccount.com
  role: roles/storagetransfer.admin
- members:
  - serviceAccount:p3998516xxxxx-p9q5dn@gcp-sa-cloud-sql.iam.gserviceaccount.com
  role: roles/storagetransfer.user
- members:
  - serviceAccount:p3998516xxxxx-p9q5dn@gcp-sa-cloud-sql.iam.gserviceaccount.com
  role: roles/storagetransfer.viewer

【问题讨论】:

    标签: google-cloud-sql google-cloud-shell


    【解决方案1】:

    在这里你可以找到关于Importing a SQL dump file的官方文档

    请注意:

    3.描述您要导入的实例:

    gcloud sql instances list    
    gcloud sql instances describe [INSTANCE_NAME]
    

    4.复制 serviceAccountEmailAddress 字段。

    gcloud sql instances describe [INSTANCE_NAME] | grep serviceAccountEmailAddress
    

    5.使用gsutil iam 将 legacyBucketWriter 和 objectViewer Cloud IAM 角色授予存储桶的服务帐号。

    gsutil iam ch serviceAccount:your_previous_service_account_step4:legacyBucketWriter,objectViewer gs://ex-bucket
    

    然后尝试导入命令:

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

    【讨论】:

    • gcloud projects get-iam-policy project-id 给我:-成员:-serviceAccount:p399851xxxxxx-p9qxxx@gcp-sa-cloud-sql.iam.gserviceaccount.com 角色:角色/存储。管理员 - 成员: - serviceAccount:p399851xxxxxx-p9qxxx@gcp-sa-cloud-sql.iam.gserviceaccount.com 角色:roles/storage.objectCreator - 成员: - serviceAccount:p399851xxxxxx-p9qxxx@gcp-sa-cloud-sql.iam .gserviceaccount.com 角色:roles/storage.objectViewer 这还不够吗?仍然收到 403 错误。
    • 您的“gsutil iam ch”命令出错:AccessDeniedException: 403 info@mydomain.be 没有 storage.buckets.getIamPolicy 访问 mybucket。
    • 您好,请问将Storage Admin 的角色授予 info@mydomain.be 是否可以解决此错误?
    • @marian.valdoi,为什么需要 legacyObjectWriter?为什么需要写权限?
    猜你喜欢
    • 1970-01-01
    • 2018-07-12
    • 2018-06-18
    • 1970-01-01
    • 2020-05-05
    • 2017-06-04
    • 2019-05-08
    • 1970-01-01
    • 2020-12-03
    相关资源
    最近更新 更多