使用 IAM 数据库身份验证登录数据库

本页面介绍了用户和服务帐号如何使用 Cloud SQL IAM 数据库身份验证登录 Cloud SQL 数据库。如需了解详情,请参阅 Cloud SQL IAM 数据库身份验证概览

准备工作

  • 将实例配置为使用 IAM 数据库身份验证。如需了解详情,请参阅配置新实例以使用 IAM 数据库身份验证
  • 将 IAM 用户或服务帐号添加到数据库。如需了解详情,请参阅将 IAM 用户或服务帐号添加到数据库
  • 在您的用户帐号中添加 roles/cloudsql.instanceUser IAM 角色以执行此任务。这是一个预定义角色,其中包含必要的 Cloud SQL IAM 权限 cloudsql.instances.login。您需要此权限才能登录数据库实例。

使用手动 IAM 数据库身份验证登录

用户或应用可以这样向数据库进行身份验证:使用 IAM,向 Google Cloud 手动请求访问令牌并将其提供给数据库。使用 Cloud SDK,您可以明确请求一个具有 Cloud SQL API 范围的 OAuth 2.0 令牌,用于登录数据库。当您使用手动 IAM 数据库身份验证以数据库用户身份登录时,将您的电子邮件地址用作用户名,并将访问令牌用作密码。您可以将此方法与数据库的直接连接或 Cloud SQL 连接器搭配使用。

在这些步骤中,您将向 Google Cloud 进行身份验证,请求访问令牌,然后通过将该令牌作为 IAM 数据库用户的密码传入来连接到数据库。

对于这些步骤,您必须执行以下操作:

如需使用 Cloud SDK 生成此令牌并登录,请执行以下操作:

gcloud

  1. 向 Google Cloud 进行身份验证。

    User

    使用 gcloud auth login 向 IAM 进行身份验证。如需了解详情,请参阅使用用户帐号进行授权

    服务帐号

    使用 gcloud auth activate-service-account 向 IAM 进行身份验证。如需了解详情,请参阅使用服务帐号进行身份验证

  2. 请求访问令牌并使用客户端登录。

    替换以下内容:

    • HOSTNAME:实例的 IP 地址。
    • USERNAME:对于 IAM 用户帐号,这是用户的电子邮件地址,不带 @ 或域名。例如,对于 test-user@gmail.com,输入 test-user。对于服务帐号,这是服务帐号的电子邮件地址(不带 @project-id.iam.gserviceaccount.com 后缀)。

    MYSQL_PWD=`gcloud auth print-access-token` mysql --enable-cleartext-plugin 
    --ssl-ca=server-ca.pem --ssl-cert=client-cert.pem
    --ssl-key=client-key.pem --host=HOSTNAME
    --user=USERNAME

    后续步骤