【问题标题】:Gcloud Export to Google Storage from Cloud SQL instance as .sql fileGcloud 作为 .sql 文件从 Cloud SQL 实例导出到 Google Storage
【发布时间】:2021-07-31 20:38:42
【问题描述】:

在对该数据库执行 SQL 查询之前,我想从 Cloud SQL 中以 .sql 格式导出数据库。 我想从 Jenkins 管道中执行此操作,因此我使用以下 Gcloud 导出命令来执行此任务。 命令语法: gcloud sql export sql dbinstancename gs://storagename/foldername/filename.sql --database=databasename

使用来自 cloud shell 的相同命令,我能够实现目标。 从云外壳执行时,它会提示授权,授权后导出成功。

当我从 Jenkins 管道中执行操作时,我遇到了以下错误。 错误: 错误:(gcloud.sql.export.sql) HTTPError 403:客户端无权发出此请求。

执行的故障排除步骤:

  • 已验证 SA(服务帐户),它是“Cloud SQL Admin”和“Storage Admin”角色的一部分。
  • 在导出命令之前尝试了此选项,但没有运气“gcloud auth application-default login”
  • 在导出命令之前绑定了此命令,但没有运气“gcloud auth login --no-launch-browser”

如果需要更多详细信息,请告诉我,并建议我解决此问题。 提前致谢。

【问题讨论】:

    标签: sql-server google-cloud-platform gcloud google-cloud-sql


    【解决方案1】:

    错误:

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

    解决方案:

    在这种情况下,请连接到 GKE 中的工作 pod 并从那里运行命令。 Worker 将拥有与 SQL 实例对话的正确权限。

    如果您在尝试此解决方案后仍然遇到同样的问题,请告诉我。

    【讨论】:

    • 我没有使用 GKE,有 Compute Engine。
    • 对不起@Mani 造成的误解
    【解决方案2】:

    使用此命令在 GCLOUD cli 中加载服务帐户密钥文件

    gcloud auth activate-service-account --key-file=/path/to/key.json
    

    【讨论】:

    • 我尝试了这个选项,我收到这条消息“激活的服务帐户凭据:服务帐户”。但是我收到了同样的 403 错误。
    • 此外,我的 Jenkins 服务器在 Project1 中,Cloud SQL 实例在 Project2 中,我需要使用哪个服务帐户进行激活。我尝试在管道中使用“gcloud auth list”命令来查找 SA,它列出了 Project1 SA。因此,我使用 Project1 SA 进行激活,但没有帮助。如果您有任何建议,请告诉我。
    • 你能分享你的管道步骤(服务帐户激活然后 gcloud 命令行使用)吗?
    • 我使用了以下 cmets:gcloud auth activate-service-account --key-file=/filepath/keyfile.json(使用 Project1 SA)gcloud sql export sql dbinstancename gs://storagename/foldername/ filename.sql --database=databasename 如果需要更多详细信息,请告诉我@guillaume blaquiere。
    • Project1 SA 在project2 中是否具有“Cloud SQL Admin”和“Storage Admin”角色?
    猜你喜欢
    • 2018-02-22
    • 2019-06-04
    • 2018-08-02
    • 2020-10-29
    • 1970-01-01
    • 2021-12-25
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多