创建和管理 SQL Server 用户

本页面介绍如何对 Cloud SQL 实例执行以下操作:

  • 配置默认用户帐号。
  • 创建、删除和更新其他用户帐号。

如需了解用户如何使用 Cloud SQL,请参阅 SQL Server 用户

准备工作

在完成以下任务之前,请先创建一个 Cloud SQL 实例。如需了解详情,请参阅创建实例

如果您计划使用数据库的管理客户端来管理用户,必须已在实例上配置默认用户。如需了解详情,请参阅配置默认帐号

配置默认用户帐号

创建新的 Cloud SQL 实例时,您必须首先配置默认用户帐号,之后才能连接到该实例。

对于 Cloud SQL for SQL Server,默认用户为 sqlserver

如需配置默认用户,请按如下所述操作:

控制台

  1. 转到 Google Cloud Console 中的“Cloud SQL 实例”页面。

    转到“Cloud SQL 实例”页面

  2. 点击实例打开其“概览”页面。
  3. 从导航菜单中选择用户
  4. 找到 sqlserver 用户,然后从“更多操作”菜单 “更多操作”图标。 中选择更改密码
  5. 输入一个您能记住且安全系数高的密码,然后点击确定

gcloud

为默认用户设置密码:

gcloud sql users set-password sqlserver \
    --instance=[INSTANCE_NAME] --prompt-for-password

REST v1beta4

以下请求使用 users:update 方法更新根用户帐号

在使用下面的任何请求数据之前,请先进行以下替换:

  • project-id:您的项目 ID
  • instance-id:所需的实例 ID
  • user-id:用户的 ID
  • password:用户的密码

HTTP 方法和网址:

PUT https://www.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://www.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://www.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

创建用户

如需创建用户,请按如下所述操作

控制台

  1. 转到 Google Cloud Console 中的“Cloud SQL 实例”页面。

    转到“Cloud SQL 实例”页面

  2. 选择实例以打开其“概览”页面。
  3. 从导航菜单中选择用户
  4. 点击添加用户
  5. 将一个用户帐号添加到实例 instance_name 页面中,添加以下信息:
    • 用户名
    • 密码
    • 主机(可选)。

      默认值是“%”,表示主机列表不受限制。您还可以提供 IP 地址或 IP 地址范围,表示只有从这些地址连接的用户才能访问数据库。

  6. 点击创建

gcloud

创建用户:

gcloud sql users create [USER_NAME] \
   --instance=[INSTANCE_NAME] --password=[PASSWORD]

Cloud SQL 和本地 SQL Server 的用户名长度限制一样。

REST v1beta4

以下请求使用 users:insert 方法创建用户帐号“user_name”。

在使用下面的请求数据之前,请先进行以下替换:

  • project-id:您的项目 ID
  • instance-id:所需的实例 ID
  • user-id:用户的 ID
  • password:用户的密码

HTTP 方法和网址:

POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users

请求 JSON 正文:

{
  "name": "user-id",
  "password": "password"
  }

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "kind": "sql#operation",
  "targetLink": "https://www.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://www.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Cloud SQL 和本地 SQL Server 的用户名长度限制一样。

更改用户密码

如需更改用户密码,请按如下所述操作

控制台

  1. 转到 Google Cloud Console 中的“Cloud SQL 实例”页面。

    转到“Cloud SQL 实例”页面

  2. 选择实例以打开其“概览”页面。
  3. 从导航菜单中选择用户
  4. 点击要更新的用户对应的“更多操作”菜单 “更多操作”图标。
  5. 选择更改密码,指定新密码,然后点击确定

gcloud

更新密码:

gcloud sql users set-password [USER_NAME] \
   --instance=[INSTANCE_NAME] --prompt-for-password

REST v1beta4

以下请求使用 users:update 方法更新用户帐号“user_name”的密码。

在使用下面的任何请求数据之前,请先进行以下替换:

  • project-id:您的项目 ID
  • instance-id:所需的实例 ID
  • user-id:用户的 ID
  • password:用户的密码

HTTP 方法和网址:

PUT https://www.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://www.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://www.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

更新用户

如需了解与 SQL Server 中的数据库级角色相关的信息,请参阅 SQL Server 文档中的使用数据库级角色

列出用户

如需列出用户,请按如下所述操作

控制台

  1. 转到 Google Cloud Console 中的“Cloud SQL 实例”页面。

    转到“Cloud SQL 实例”页面

  2. 选择实例以打开其“概览”页面。
  3. 从导航菜单中选择用户

gcloud

列出此实例的用户:

gcloud sql users list --instance=[INSTANCE_NAME]

如需查看此命令的完整参数列表,请参阅 gcloud sql users list 参考页面

REST v1beta4

以下请求使用 users:list 方法列出为实例定义的用户。

在使用下面的请求数据之前,请先进行以下替换:

  • project-id:您的项目 ID
  • instance-id:所需的实例 ID

HTTP 方法和网址:

GET https://www.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"
        ]
      }
    },
    {
      ...
    },
    {
      ...
    }
  ]
}

删除用户

如需删除用户,请按如下所述操作

在删除用户之前,您必须先放弃该用户拥有的所有对象或重新分配其所有权,并撤消该角色对其他对象拥有的任何特权。

控制台

  1. 转到 Google Cloud Console 中的“Cloud SQL 实例”页面。

    转到“Cloud SQL 实例”页面

  2. 选择实例以打开其“概览”页面。
  3. 从导航菜单中选择用户
  4. 点击要删除的用户对应的“更多操作”菜单 “更多操作”图标。
  5. 选择删除,然后点击确定

gcloud

删除用户:

gcloud sql users delete [USER_NAME] --host=[HOST] --instance=[INSTANCE_NAME]

REST v1beta4

以下请求使用 users:delete 方法删除指定的用户帐号。

在使用下面的请求数据之前,请先进行以下替换:

  • project-id:您的项目 ID
  • instance-id:所需的实例 ID
  • user-id:用户的 ID

HTTP 方法和网址:

DELETE https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?host=&name=user-id

请求 JSON 正文:

{
  "name": "user-id",
  "host": ""
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "kind": "sql#operation",
  "targetLink": "https://www.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://www.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

后续步骤