本页介绍了如何创建或修改 Cloud SQL 实例以允许配置为使用 Cloud SQL IAM 数据库身份验证的用户、服务账号或群组。如需详细了解 Cloud SQL IAM 集成,请参阅 IAM 身份验证。
新创建的实例具有四个系统数据库:
information_schema
:提供对数据库元数据的访问权限,这些元数据是关于 MySQL 服务器的信息。mysql
:系统架构。它包含一些表,这些表用于存储 MySQL 服务器运行时所需的信息。performance_schema
:用于在较低级别监控 MySQL 服务器执行的功能。sys
:包含一组对象,可帮助 DBA 和开发者解释由性能架构收集的数据。
准备工作
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
确保您的用户账号具有 Cloud SQL Admin 和 Compute Viewer 角色。
详细了解角色和权限。
配置新实例以使用 IAM 数据库身份验证
如需配置新的 Cloud SQL 实例以进行 IAM 数据库身份验证,您需要启用 cloudsql_iam_authentication
标志。启用此标志后,您可以将 IAM 用户、服务账号或群组添加到 Cloud SQL 实例。
如需配置新的 Cloud SQL 实例以使用 IAM 数据库身份验证,请执行以下操作:
控制台
-
在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。
- 点击创建实例。
- 点击选择 MySQL。
- 为实例 ID 输入名称。 请勿在实例名称中包含敏感信息或个人身份信息,因为此名称对外可见。无需在实例名称中包含项目 ID。系统会在适当的位置(例如在日志文件中)自动包含项目 ID。
- 为根用户输入密码。
- 从数据库版本菜单中,选择相应的数据库版本。
- 在选择区域和可用区可用性部分,为实例选择区域和可用区。将实例与访问实例的资源置于相同地区内。以后无法更改选择的地区。通常,您无需指定区域。
- 在自定义实例部分,点击显示配置选项,然后展开标志。
- 点击添加标志。
- 从选择标志菜单中,选择
cloudsql_iam_authentication
标志。确保选择开启作为此标志的值,然后点击完成。 - 根据需要配置其他实例设置。如需详细了解设置,请参阅设置。
- 点击创建实例。
gcloud
运行 gcloud sql instances create
,注意将 --database-flags
参数设置为 cloudsql_iam_authentication=on
。
替换以下内容:
- INSTANCE_NAME:新实例的名称。
- MYSQL_VERSION:MySQL 版本(例如 MYSQL_5_7 或 MYSQL_8_0)。
- NUMBER_OF_CORES:机器中的核心数。
- AMOUNT_OF_MEMORY:机器中的内存量。应该提供大小单位(例如 3072MiB 或 9GiB)。
- ZONE:首选 Compute Engine 可用区(例如 us-central1-a 或 us-central1-b)。
- PASSWORD:为根用户创建密码。
gcloud sql instances create INSTANCE_NAME \ --database-version=MYSQL_VERSION \ --cpu=NUMBER_OF_CORES \ --memory=AMOUNT_OF_MEMORY \ --zone=ZONE_NAME \ --root-password=PASSWORD \ --database-flags=cloudsql_iam_authentication=on
Terraform
如需创建启用了 IAM 数据库身份验证的实例,请使用 Terraform 资源。
应用更改
如需在 Google Cloud 项目中应用 Terraform 配置,请完成以下部分中的步骤。
准备 Cloud Shell
- 启动 Cloud Shell。
-
设置要在其中应用 Terraform 配置的默认 Google Cloud 项目。
您只需为每个项目运行一次以下命令,即可在任何目录中运行它。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 Terraform 配置文件中设置显式值,则环境变量会被替换。
准备目录
每个 Terraform 配置文件都必须有自己的目录(也称为“根模块”)。
-
在 Cloud Shell 中,创建一个目录,并在该目录中创建一个新文件。文件名必须具有
.tf
扩展名,例如main.tf
。在本教程中,该文件称为main.tf
。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
如果您按照教程进行操作,可以在每个部分或步骤中复制示例代码。
将示例代码复制到新创建的
main.tf
中。(可选)从 GitHub 中复制代码。如果端到端解决方案包含 Terraform 代码段,则建议这样做。
- 查看和修改要应用到您的环境的示例参数。
- 保存更改。
-
初始化 Terraform。您只需为每个目录执行一次此操作。
terraform init
(可选)如需使用最新的 Google 提供程序版本,请添加
-upgrade
选项:terraform init -upgrade
应用更改
-
查看配置并验证 Terraform 将创建或更新的资源是否符合您的预期:
terraform plan
根据需要更正配置。
-
通过运行以下命令并在提示符处输入
yes
来应用 Terraform 配置:terraform apply
等待 Terraform 显示“应用完成!”消息。
- 打开您的 Google Cloud 项目以查看结果。在 Google Cloud 控制台的界面中找到资源,以确保 Terraform 已创建或更新它们。
删除更改
如需删除更改,请执行以下操作:
- 如需停用删除防护,请在 Terraform 配置文件中将
deletion_protection
参数设置为false
。deletion_protection = "false"
- 运行以下命令并在提示符处输入
yes
,以应用更新后的 Terraform 配置:terraform apply
-
运行以下命令并在提示符处输入
yes
,以移除之前使用 Terraform 配置应用的资源:terraform destroy
REST v1
请勿在实例名称中包含敏感信息或个人身份信息 (PII),因为此名称可供外部用户查看。
无需在实例名称中包含项目 ID。系统会在适当的位置(例如在日志文件中)自动包含项目 ID。
在使用任何请求数据之前,请先进行以下替换:
- INSTANCE_ID:所需的实例 ID
- REGION:所需区域,例如 us-east-1
- PROJECT_ID:项目 ID
- LOCATION_ID:位置 ID
- DATABASE_VERSION:数据库版本的枚举字符串。
例如
MYSQL_8_0
- PASSWORD:根用户的密码
- MACHINE_TYPE:机器(层级)类型的枚举字符串,例如:
db-custom-[CPUS]-[MEMORY_MBS]
HTTP 方法和网址:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/instances
请求 JSON 正文:
{ "name": "INSTANCE_ID", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "rootPassword": "PASSWORD", "settings": { "tier": "MACHINE_TYPE", "backupConfiguration": { "enabled": true }, "databaseFlags": [ { "name": "cloudsql_iam_authentication", "value": "on" } ] } }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
REST v1beta4
请勿在实例名称中包含敏感信息或个人身份信息 (PII),因为此名称可供外部用户查看。
无需在实例名称中包含项目 ID。系统会在适当的位置(例如在日志文件中)自动包含项目 ID。
在使用任何请求数据之前,请先进行以下替换:
- INSTANCE_ID:所需的实例 ID
- REGION:所需区域,例如 us-east-1
- PROJECT_ID:项目 ID
- LOCATION_ID:位置 ID
- DATABASE_VERSION:数据库版本的枚举字符串。
例如
MYSQL_8_0
- PASSWORD:根用户的密码
- MACHINE_TYPE:机器(层级)类型的枚举字符串,例如:
db-custom-[CPUS]-[MEMORY_MBS]
HTTP 方法和网址:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/locations/LOCATION_ID/instances
请求 JSON 正文:
{ "name": "INSTANCE_ID", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "rootPassword": "PASSWORD", "settings": { "tier": "MACHINE_TYPE", "backupConfiguration": { "enabled": true }, "databaseFlags": [ { "name": "cloudsql_iam_authentication", "value": "on" } ] } }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
配置现有实例以使用 IAM 数据库身份验证
如需配置现有 Cloud SQL 实例以进行 IAM 数据库身份验证,您需要启用 cloudsql_iam_authentication
标志。启用此标志后,您可以将 IAM 用户、服务账号或群组添加到 Cloud SQL 实例。
如需配置现有 Cloud SQL 实例以使用 IAM 数据库身份验证,请执行以下操作:
控制台
-
在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。
- 如需打开实例的概览页面,请点击实例名称。
- 点击修改。
- 在自定义实例部分,展开标志。
- 点击添加标志。
- 从选择标志菜单中,选择
cloudsql_iam_authentication
标志。确保选择开启作为此标志的值,然后点击完成。 - 根据需要配置其他实例设置。如需详细了解设置,请参阅设置。
- 点击保存。
gcloud
如需了解如何安装和开始使用 gcloud CLI,请参阅安装 gcloud CLI。如需了解如何启动 Cloud Shell,请参阅使用 Cloud Shell。
对于此过程,请使用
gcloud
sql instances patch
。
替换以下内容:
- INSTANCE_NAME:新实例的名称。
gcloud sql instances patch INSTANCE_NAME \ --database-flags=cloudsql_iam_authentication=on
这将重置所有其他现有数据库标志设置。如需进一步了解如何设置数据库标志,请参阅设置数据库标志。
REST v1
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:项目 ID
- LOCATION_ID:位置 ID
- INSTANCE_ID:所需的实例 ID
- REGION:所需区域
- DATABASE_VERSION:数据库版本的枚举字符串。
例如
MYSQL_8_0
- PASSWORD:根用户的密码
- MACHINE_TYPE:机器(层级)类型的枚举字符串,例如:
db-custom-[CPUS]-[MEMORY_MBS]
HTTP 方法和网址:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/instances
请求 JSON 正文:
{ "name": "INSTANCE_ID", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "rootPassword": "PASSWORD", "settings": { "tier": "MACHINE_TYPE", "backupConfiguration": { "enabled": true } "databaseFlags": [ { "name": "cloudsql_iam_authentication", "value": "on" } ] } }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
REST v1beta4
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:项目 ID
- LOCATION_ID:位置 ID
- INSTANCE_ID:所需的实例 ID
- REGION:所需区域
- DATABASE_VERSION:数据库版本的枚举字符串。
例如
MYSQL_8_0
- PASSWORD:根用户的密码
- MACHINE_TYPE:机器(层级)类型的枚举字符串,例如:
db-custom-[CPUS]-[MEMORY_MBS]
HTTP 方法和网址:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/locations/LOCATION_ID/instances
请求 JSON 正文:
{ "name": "INSTANCE_ID", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "rootPassword": "PASSWORD", "settings": { "tier": "MACHINE_TYPE", "backupConfiguration": { "enabled": true } "databaseFlags": [ { "name": "cloudsql_iam_authentication", "value": "on" } ] } }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
后续步骤
- 详细了解 IAM 数据库身份验证。
- 了解如何配置读取副本登录以使用 IAM 数据库身份验证。
- 了解如何创建使用 Cloud SQL IAM 数据库身份验证的用户和服务账号。
- 了解如何向用户或服务账号添加 IAM 政策绑定。
- 了解如何使用 IAM 数据库身份验证登录 Cloud SQL 数据库。
- 了解如何管理用户和服务账号以使用 IAM 数据库身份验证。