创建和管理用户

本页面介绍如何启用和使用 Cloud SQL 内置身份验证。

如需查看概览,请参阅 Cloud SQL 内置数据库身份验证

创建用户之前的准备工作

  1. 创建 Cloud SQL 实例。如需了解详情,请参阅创建实例
  2. 为实例启用密码政策。如需了解详情,请参阅实例密码政策
  3. 如果您计划使用数据库的管理客户端来管理用户,请执行以下操作:

    1. 将客户端连接到实例。请参阅外部应用连接方案

    2. 通过设置密码在实例上配置默认用户。请参阅为默认用户账号设置密码

为默认用户账号设置密码

创建新的 Cloud SQL 实例时,您必须先为默认用户账号设置密码,然后才能连接到该实例。

对于 Cloud SQL for PostgreSQL,默认用户为 postgres

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

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

gcloud

使用 gcloud sql users set-password 命令为默认用户设置密码,如下所示。

在运行该命令之前,请将 INSTANCE_NAME 替换为实例的名称。

gcloud sql users set-password postgres \
--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": "[email protected]",
  "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": "[email protected]",
  "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"
}

创建用户

设置默认用户账号后,您可以创建其他用户。

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 如需打开实例的概览页面,请点击实例名称。
  3. 从 SQL 导航菜单中选择用户
  4. 点击添加用户账号

    向实例添加用户账号 instance_name 页面中,您可以选择用户是使用内置数据库方法(用户名和密码)还是作为 IAM 用户进行身份验证。

  5. 选择内置身份验证(默认设置),并添加以下信息:
    • 用户名
    • 可选。密码。 提供一个您能记住且安全系数高的密码。
  6. 点击添加

在使用 Cloud SQL 的身份验证方法的实例上创建的用户会自动获得 cloudsqlsuperuser 角色,并具有与此角色关联的以下权限:CREATEROLECREATEDBLOGIN

如果您需要更改这些用户的属性,请在 psql 客户端中使用 ALTER ROLE 命令。并非所有属性都可以使用 ALTER ROLE 进行修改。NOSUPERUSERNOREPLICATION 角色属于例外情况。

gcloud

如需创建用户,请使用 gcloud sql users create 命令。

替换以下内容:

  • USER_NAME:用户名。
  • INSTANCE_NAME:实例的名称。
  • PASSWORD:用户的密码。
gcloud sql users create USER_NAME \
--instance=INSTANCE_NAME \
--password=PASSWORD

在使用 Cloud SQL 的身份验证方法的实例上创建的用户会自动获得 cloudsqlsuperuser 角色,并具有与此角色关联的以下权限:CREATEROLECREATEDBLOGIN

如果您需要更改这些用户的属性,请在 psql 客户端中使用 ALTER ROLE 命令。并非所有属性都可以使用 ALTER ROLE 进行修改。NOSUPERUSERNOREPLICATION 角色属于例外情况。

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

创建用户时,您可以添加用户密码政策参数。

Terraform

如需创建用户,请使用 Terraform 资源

resource "random_password" "pwd" {
  length  = 16
  special = false
}

resource "google_sql_user" "user" {
  name     = "user"
  instance = google_sql_database_instance.instance.name
  password = random_password.pwd.result
}

应用更改

如需在 Google Cloud 项目中应用 Terraform 配置,请完成以下部分中的步骤。

准备 Cloud Shell

  1. 启动 Cloud Shell
  2. 设置要在其中应用 Terraform 配置的默认 Google Cloud 项目。

    您只需为每个项目运行一次以下命令,即可在任何目录中运行它。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    如果您在 Terraform 配置文件中设置显式值,则环境变量会被替换。

准备目录

每个 Terraform 配置文件都必须有自己的目录(也称为“根模块”)。

  1. Cloud Shell 中,创建一个目录,并在该目录中创建一个新文件。文件名必须具有 .tf 扩展名,例如 main.tf。在本教程中,该文件称为 main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 如果您按照教程进行操作,可以在每个部分或步骤中复制示例代码。

    将示例代码复制到新创建的 main.tf 中。

    (可选)从 GitHub 中复制代码。如果端到端解决方案包含 Terraform 代码段,则建议这样做。

  3. 查看和修改要应用到您的环境的示例参数。
  4. 保存更改。
  5. 初始化 Terraform。您只需为每个目录执行一次此操作。
    terraform init

    (可选)如需使用最新的 Google 提供程序版本,请添加 -upgrade 选项:

    terraform init -upgrade

应用更改

  1. 查看配置并验证 Terraform 将创建或更新的资源是否符合您的预期:
    terraform plan

    根据需要更正配置。

  2. 通过运行以下命令并在提示符处输入 yes 来应用 Terraform 配置:
    terraform apply

    等待 Terraform 显示“应用完成!”消息。

  3. 打开您的 Google Cloud 项目以查看结果。在 Google Cloud 控制台的界面中找到资源,以确保 Terraform 已创建或更新它们。

删除更改

如需删除更改,请执行以下操作:

  1. 如需停用删除防护,请在 Terraform 配置文件中将 deletion_protection 参数设置为 false
    deletion_protection =  "false"
  2. 运行以下命令并在提示符处输入 yes,以应用更新后的 Terraform 配置:
    terraform apply
  1. 运行以下命令并在提示符处输入 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": "[email protected]",
  "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 的身份验证方法的实例上创建的用户会自动获得 cloudsqlsuperuser 角色,并具有与此角色关联的以下权限:CREATEROLECREATEDBLOGIN

如果您需要更改这些用户的属性,请在 psql 客户端中使用 ALTER ROLE 命令。并非所有属性都可以使用 ALTER ROLE 进行修改。NOSUPERUSERNOREPLICATION 角色属于例外情况。

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

创建用户时,您可以添加用户密码政策参数。

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": "[email protected]",
  "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 的身份验证方法的实例上创建的用户会自动获得 cloudsqlsuperuser 角色,并具有与此角色关联的以下权限:CREATEROLECREATEDBLOGIN

如果您需要更改这些用户的属性,请在 psql 客户端中使用 ALTER ROLE 命令。并非所有属性都可以使用 ALTER ROLE 进行修改。NOSUPERUSERNOREPLICATION 角色属于例外情况。

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

创建用户时,您可以添加用户密码政策参数。

psql 客户端

  1. psql 提示符处,运行如下命令来创建用户:
      CREATE USER USER_NAME
          WITH PASSWORD PASSWORD
          ATTRIBUTE1
          ATTRIBUTE2...;
      

    出现提示时,请输入密码。

    如需详细了解角色属性,请参阅 PostgreSQL 文档

  2. 您可以通过显示用户表来确认创建用户:
      SELECT * FROM pg_roles;
      

设置用户密码政策

您可以使用内置身份验证类型设置密码政策。

gcloud

如需设置用户密码政策,请使用 gcloud sql users set-password-policy 命令。

替换以下内容:

  • USER_NAME:用户名。
  • INSTANCE_NAME:实例的名称。
  • HOST:用户的主机名,可以是特定 IP 地址、地址范围或任何主机 (%)。
  • PASSWORD_POLICY_ALLOWED_FAILED_ATTEMPTS(可选):用户在锁定账号之前可以错误地尝试密码的次数。使用 --password-policy-enable-failed-attempts-check 启用检查,使用 --no-password-policy-enable-failed-attempts-check 停用检查。
  • PASSWORD_POLICY_PASSWORD_EXPIRATION_DURATION(可选):指定密码失效且用户需要创建新密码之前的天数。
gcloud sql users set-password-policy USER_NAME \
--instance=INSTANCE_NAME \
--host=HOST \
--password-policy-enable-failed-attempts-check \
--password-policy-allowed-failed-attempts=PASSWORD_POLICY_ALLOWED_FAILED_ATTEMPTS \
--password-policy-password-expiration-duration=PASSWORD_POLICY_PASSWORD_EXPIRATION_DURATION

如需移除用户密码政策,请使用 --clear-password-policy 参数。

gcloud sql users set-password-policy USER_NAME \
--instance=INSTANCE_NAME \
--host=HOST \
--clear-password-policy

如需查看用户密码政策,请参阅列出用户

REST v1

如需设置用户密码政策,请将 PUT 请求与 users:update 方法结合使用。

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

  • PROJECT_ID:您的项目 ID
  • INSTANCE_ID:实例 ID
  • USER_ID:用户的 ID
  • PASSWORD:用户的密码
  • FAILED_ATTEMPTS_CHECK:设置为 true 以启用锁定账号之前登录尝试失败次数检查。
  • NUMBER_OF_ATTEMPTS:锁定账户之前账号登录尝试失败次数。
  • PASSWORD_EXPIRATION_DURATION:密码到期后,用户需要创建新密码的天数。

HTTP 方法和网址:

PUT https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users?name=USER_ID

请求 JSON 正文:

{
  "name": "USER_ID",
  "password": "PASSWORD",
  "data":
  {
    "passwordValidationUserPolicy" : {
      {
        "enableFailedAttemptsCheck" : "FAILED_ATTEMPTS_CHECK",
        "allowedFailedAttempts" : "NUMBER_OF_ATTEMPTS",
        "passwordExpirationDuration" : "PASSWORD_EXPIRATION_DURATION"
      }
    },
  }
}

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

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

如需查看用户密码政策,请参阅列出用户

REST v1beta4

如需设置用户密码政策,请将 PUT 请求与 users:update 方法结合使用。

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

  • PROJECT_ID:您的项目 ID
  • INSTANCE_ID:实例 ID
  • USER_ID:用户的 ID
  • PASSWORD:用户的密码
  • FAILED_ATTEMPTS_CHECK:设置为 true 以启用锁定账号之前登录尝试失败次数检查。
  • NUMBER_OF_ATTEMPTS:锁定账户之前账号登录尝试失败次数。
  • PASSWORD_EXPIRATION_DURATION:密码到期后,用户需要创建新密码的天数。

HTTP 方法和网址:

PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users?name=USER_ID

请求 JSON 正文:

{
  "name": "USER_ID",
  "password": "PASSWORD",
  "data":
  {
    "passwordValidationUserPolicy" : {
      {
        "enableFailedAttemptsCheck" : "FAILED_ATTEMPTS_CHECK",
        "allowedFailedAttempts" : "NUMBER_OF_ATTEMPTS",
        "passwordExpirationDuration" : "PASSWORD_EXPIRATION_DURATION"
      }
    },
  }
}

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

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

如需查看用户密码政策,请参阅列出用户

列出用户

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 如需打开实例的概览页面,请点击实例名称。
  3. 从 SQL 导航菜单中选择用户

gcloud

使用 gcloud sql users list 命令列出此实例的用户:

gcloud sql users list \
--instance=INSTANCE_NAME

该命令会为每个用户返回 NameHost 和身份验证 Type

此外,对于内置身份验证类型,还会返回密码政策设置和状态。例如:

    NAME    HOST    TYPE        PASSWORD_POLICY
    user1           BUILT_IN    {'allowedFailedAttempts': 2,
                                 'enableFailedAttemptsCheck': True,
                                 'passwordExpirationDuration': '7d',
                                 'status': {
                                   'locked': True,
                                   'passwordExpirationTime': '2022-07-01T19:53:45.822742904Z'
                                 }
                                }
   

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"
        ]
      }
    },
    {
      ...
    },
    {
      ...
    }
  ]
}

如果设置了用户密码政策,则响应的 items 部分将包含 passwordPolicy 部分。以下代码示例展示了 passwordPolicy 部分。

  {
  ...
  "passwordValidationUserPolicy" : {
    {
      "enableFailedAttemptsCheck" : true,
      "allowedFailedAttempts" : 8,
      "passwordExpirationDuration" : "7d"
    }
  },
  ...
}
  

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"
        ]
      }
    },
    {
      ...
    },
    {
      ...
    }
  ]
}

如果设置了用户密码政策,则响应的 items 部分将包含 passwordPolicy 部分。以下代码示例展示了 passwordPolicy 部分。

  {
  ...
  "passwordValidationUserPolicy" : {
    {
      "enableFailedAttemptsCheck" : true,
      "allowedFailedAttempts" : 8,
      "passwordExpirationDuration" : "7d"
    }
  },
  ...
}
  

psql 客户端

psql 提示符处,运行以下命令以列出 PostgreSQL 用户:

SELECT * FROM pg_roles;

更改用户密码

您可以通过以下任一方式更改用户密码。

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 如需打开实例的概览页面,请点击实例名称。
  3. 从 SQL 导航菜单中选择用户
  4. 点击要更新的用户对应的“更多操作”菜单 “更多操作”图标。
  5. 选择更改密码
  6. 指定新密码。
  7. 点击确定

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"
}

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "[email protected]",
  "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"
}

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "[email protected]",
  "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"
}

psql 客户端

psql 提示符处,运行 ALTER USER 命令。
  1. 解锁用户。
    ALTER USER USER_NAME WITH LOGIN;
  2. 更改密码,并在出现提示时输入密码。
    ALTER USER USER_NAME WITH PASSWORD PASSWORD;

如果用户由于密码政策设置而被锁定,请更改密码以解锁密码。更改密码时,确保密码遵循密码政策。

移除用户密码政策

您可以移除具有内置身份验证类型的用户的密码政策。

gcloud

如需移除用户密码政策,请使用 gcloud sql users set-password-policy 命令和 --clear-password-policy 参数。

替换以下内容:

  • USER_NAME:用户名
  • INSTANCE_NAME:实例的名称
  • HOST:用户的主机名,可以是特定 IP 地址、地址范围或任何主机 (%)
gcloud sql users set-password-policy USER_NAME \
--instance=INSTANCE_NAME \
--host=HOST \
--clear-password-policy

REST v1

如需移除用户密码政策,请将 PUT 请求与 users:update 方法结合使用。

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

  • PROJECT_ID:您的项目 ID
  • INSTANCE_ID:实例 ID
  • USER_ID:用户的 ID
  • PASSWORD:用户的密码

HTTP 方法和网址:

PUT https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users?name=USER_ID

请求 JSON 正文:

{
  "name": "USER_ID",
  "password": "PASSWORD",
  "data":
  {
    "passwordValidationUserPolicy" : {}
  }
}

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

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

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",
  "data":
  {
    "passwordValidationUserPolicy" : {}
  }
}

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

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

移除用户

默认用户可以移除用户。

在移除用户之前,您必须先丢弃该用户拥有的所有对象或重新分配其所有权,并撤消相应角色对其他对象授予的任何权限。

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 如需打开实例的概览页面,请点击实例名称。
  3. 从 SQL 导航菜单中选择用户
  4. 点击要移除的用户对应的“更多操作”图标 “更多操作”图标。
  5. 选择移除,然后再次选择移除

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": "[email protected]",
  "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": "[email protected]",
  "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"
}

psql 客户端

  1. psql 提示符处,运行如下命令来删除用户:
    DROP ROLE USER_NAME;

    如需详细了解 DROP ROLE 语句,请参阅 PostgreSQL 文档

更新用户属性

如需更新特性 (attribute) 等用户属性 (property),您必须使用 psql 客户端。 如需了解详情,请参阅 PostgreSQL 文档中的数据库角色

后续步骤