本页面介绍如何启用和使用 Cloud SQL 内置身份验证。
如需详细了解您使用 Cloud SQL 创建的用户,请参阅其他 SQL Server 用户。创建用户之前的准备工作
- 创建 Cloud SQL 实例。如需了解详情,请参阅创建实例。
- 如果您计划使用数据库的管理客户端来管理用户,请设置密码以在实例上配置默认用户。请参阅为默认用户账号设置密码。
为默认用户账号设置密码
创建新的 Cloud SQL 实例时,您必须先为默认用户账号设置密码,然后才能连接到该实例。
对于 Cloud SQL for SQL Server,默认用户为sqlserver
。
控制台
-
在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。
- 如需打开实例的概览页面,请点击实例名称。
- 从 SQL 导航菜单中选择用户。
- 找到
sqlserver
用户,然后从“更多操作”菜单 中选择更改密码。 - 提供一个您能记住且安全系数高的密码,然后点击确定。
gcloud
使用 gcloud sql users set-password
命令为默认用户设置密码,如下所示。
在运行该命令之前,请将 INSTANCE_NAME 替换为实例的名称。
gcloud sql users set-password sqlserver \ --instance=INSTANCE_NAME \ --prompt-for-password
REST v1
如需更新默认用户账号的密码,请使用 PUT 请求和 users:update 方法。
在使用任何请求数据之前,请先进行以下替换:
- project-id:您的项目 ID
- instance-id:所需的实例 ID
- user-id:用户的 ID
- password:用户的密码
HTTP 方法和网址:
PUT https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?name=user-id
请求 JSON 正文:
{ "name": "user-id", "password": "password" }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:38:41.217Z", "startTime": "2020-02-07T22:38:41.217Z", "endTime": "2020-02-07T22:38:44.801Z", "operationType": "UPDATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
REST v1beta4
如需更新默认用户账号的密码,请使用 PUT 请求和 users:update 方法。
在使用任何请求数据之前,请先进行以下替换:
- project-id:您的项目 ID
- instance-id:所需的实例 ID
- user-id:用户的 ID
- password:用户的密码
HTTP 方法和网址:
PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?name=user-id
请求 JSON 正文:
{ "name": "user-id", "password": "password" }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:38:41.217Z", "startTime": "2020-02-07T22:38:41.217Z", "endTime": "2020-02-07T22:38:44.801Z", "operationType": "UPDATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
创建用户
设置默认用户账号后,您可以创建其他用户。
控制台
-
在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。
- 如需打开实例的概览页面,请点击实例名称。
- 从 SQL 导航菜单中选择用户。
- 点击添加用户账号。
- 在将一个用户账号添加到实例 instance_nameinstance_name 页面中,添加以下信息:
- 用户名。
- 密码,(可选)。
- 点击添加。
gcloud
如需创建用户,请使用 gcloud sql users create
命令。
替换以下内容:
- USER_NAME:用户名。
- INSTANCE_NAME:实例的名称。
- PASSWORD:用户的密码。
gcloud sql users create USER_NAME \ --instance=INSTANCE_NAME \ --password=PASSWORD
Cloud SQL 和本地 SQL Server 的用户名长度限制一样。
Terraform
如需创建用户,请使用 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
如需创建用户,请使用 POST 请求和 users:insert 方法。
在使用任何请求数据之前,请先进行以下替换:
- project-id:您的项目 ID
- instance-id:所需的实例 ID
- user-id:用户的 ID
- password:用户的密码
HTTP 方法和网址:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users
请求 JSON 正文:
{ "name": "user-id", "password": "password" }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:44:16.656Z", "startTime": "2020-02-07T22:44:16.686Z", "endTime": "2020-02-07T22:44:20.437Z", "operationType": "CREATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
Cloud SQL 和本地 SQL Server 的用户名长度限制一样。
REST v1beta4
如需创建用户,请使用 POST 请求和 users:insert 方法。
在使用任何请求数据之前,请先进行以下替换:
- project-id:您的项目 ID
- instance-id:所需的实例 ID
- user-id:用户的 ID
- password:用户的密码
HTTP 方法和网址:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users
请求 JSON 正文:
{ "name": "user-id", "password": "password" }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:44:16.656Z", "startTime": "2020-02-07T22:44:16.686Z", "endTime": "2020-02-07T22:44:20.437Z", "operationType": "CREATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
Cloud SQL 和本地 SQL Server 的用户名长度限制一样。
列出用户
控制台
-
在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。
- 如需打开实例的概览页面,请点击实例名称。
- 从 SQL 导航菜单中选择用户。
gcloud
使用 gcloud sql users list 命令列出此实例的用户:
gcloud sql users list \ --instance=INSTANCE_NAME
REST v1
如需列出为实例定义的用户,请使用 GET 请求和 users:list 方法。
在使用任何请求数据之前,请先进行以下替换:
- project-id:您的项目 ID
- instance-id:所需的实例 ID
HTTP 方法和网址:
GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "sql#usersList", "items": [ { "kind": "sql#user", "etag": "--redacted--", "name": "sqlserver", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { "kind": "sql#user", "etag": "--redacted--", "name": "user-id-1", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { "kind": "sql#user", "etag": "--redacted--", "name": "user-id-2", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { ... }, { ... } ] }
REST v1beta4
如需列出为实例定义的用户,请使用 GET 请求和 users:list 方法。
在使用任何请求数据之前,请先进行以下替换:
- project-id:您的项目 ID
- instance-id:所需的实例 ID
HTTP 方法和网址:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "sql#usersList", "items": [ { "kind": "sql#user", "etag": "--redacted--", "name": "sqlserver", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { "kind": "sql#user", "etag": "--redacted--", "name": "user-id-1", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { "kind": "sql#user", "etag": "--redacted--", "name": "user-id-2", "host": "", "instance": "instance-id", "project": "project-id", "sqlserverUserDetails": { "serverRoles": [ "CustomerDbRootRole" ] } }, { ... }, { ... } ] }
更改用户密码
您可以通过以下任一方式更改用户密码。
控制台
-
在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。
- 如需打开实例的概览页面,请点击实例名称。
- 从 SQL 导航菜单中选择用户。
- 点击要更新的用户对应的“更多操作”菜单 。
- 选择更改密码。
- 指定新密码。
- 点击确定。
gcloud
使用 gcloud sql users set-password
命令更改密码。
替换以下内容:
- USER_NAME:用户名。
- INSTANCE_NAME:实例的名称。
gcloud sql users set-password USER_NAME \ --instance=INSTANCE_NAME \ --prompt-for-password
REST v1
如需更改用户密码,请使用 PUT 请求和 users:update 方法。
以下请求会更新用户账号 user_name
的密码。
在使用任何请求数据之前,请先进行以下替换:
- project-id:您的项目 ID
- instance-id:所需的实例 ID
- user-id:用户的 ID
- password:用户的密码
HTTP 方法和网址:
PUT https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?name=user-id
请求 JSON 正文:
{ "name": "user-id", "password": "password", "retainedPassword" : "dual-password" }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:38:41.217Z", "startTime": "2020-02-07T22:38:41.217Z", "endTime": "2020-02-07T22:38:44.801Z", "operationType": "UPDATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
REST v1beta4
如需更改用户密码,请使用 PUT 请求和 users:update 方法。
以下请求会更新用户账号 user_name
的密码。
在使用任何请求数据之前,请先进行以下替换:
- project-id:您的项目 ID
- instance-id:所需的实例 ID
- user-id:用户的 ID
- password:用户的密码
HTTP 方法和网址:
PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?name=user-id
请求 JSON 正文:
{ "name": "user-id", "password": "password", "retainedPassword" : "dual-password" }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:38:41.217Z", "startTime": "2020-02-07T22:38:41.217Z", "endTime": "2020-02-07T22:38:44.801Z", "operationType": "UPDATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
移除用户
默认用户可以移除用户。
在移除用户之前,您必须先丢弃该用户拥有的所有对象或重新分配其所有权,并撤消相应角色对其他对象授予的任何权限。
控制台
-
在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。
- 如需打开实例的概览页面,请点击实例名称。
- 从 SQL 导航菜单中选择用户。
- 点击要移除的用户对应的“更多操作”图标 。
- 选择移除,然后再次选择移除。
gcloud
使用 gcloud sql users delete
命令移除用户。
替换以下内容:
- USER_NAME:用户名。
- INSTANCE_NAME:实例的名称。
gcloud sql users delete USER_NAME \ --instance=INSTANCE_NAME
REST v1
以下请求使用 users:delete 方法删除指定的用户账号。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的项目 ID
- INSTANCE_ID:所需的实例 ID
- USERNAME:用户或服务账号的电子邮件地址
HTTP 方法和网址:
DELETE https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users?host=&name=USERNAME
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:38:41.217Z", "startTime": "2020-02-07T22:38:41.217Z", "endTime": "2020-02-07T22:38:44.801Z", "operationType": "DELETE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
REST v1beta4
以下请求使用 users:delete 方法删除指定的用户账号。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的项目 ID
- INSTANCE_ID:所需的实例 ID
- USERNAME:用户或服务账号的电子邮件地址
HTTP 方法和网址:
DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users?host=&name=USERNAME
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "DONE", "user": "user@example.com", "insertTime": "2020-02-07T22:38:41.217Z", "startTime": "2020-02-07T22:38:41.217Z", "endTime": "2020-02-07T22:38:44.801Z", "operationType": "DELETE_USER", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
更新用户属性
如需了解与 SQL Server 中的数据库级角色相关的信息,请参阅 SQL Server 文档中的使用数据库级角色。后续步骤
- 详细了解 Cloud SQL 如何与用户配合运作。