使用标准身份验证管理 PostgreSQL 用户

本页介绍了如何使用基于密码的 PostgreSQL 标准身份验证方法为 PostgreSQL 角色、用户和组创建、管理和移除 PostgreSQL 和 AlloyDB。

在 AlloyDB 中创建 PostgreSQL 用户

创建 PostgreSQL 用户时,他们一开始只有 LOGIN 权限。如需详细了解这些权限,请参阅 CREATE USER

您可以使用 ALTER ROLE 命令更改任何用户的权限。如果您使用 psql 客户端创建新用户,则可以选择将其与其他角色相关联,或分配不同的权限。

管理用户

您可以使用 Google Cloud CLI 或 PostgreSQL 命令创建和管理 AlloyDB 用户。以下部分将演示使用这两种方法执行常见的用户管理任务。

准备工作

如需使用 PostgreSQL 命令管理集群中的用户,您需要满足以下条件:

  • 有权访问 psql 客户端
  • postgres 数据库用户或具有适当管理员权限的其他用户角色的访问权限

如需使用 Google Cloud 控制台或 Google Cloud CLI 管理集群中的用户,该集群必须有一个主实例。如果您的集群没有主实例,您必须先创建一个主实例,然后才能管理用户。

创建数据库用户

如需创建一个直接使用用户名和密码(也称为内置身份验证)与数据库进行身份验证的数据库用户,请按照本部分中的步骤操作。

如需改为创建使用 Identity and Access Management (IAM) 进行身份验证的数据库用户,请参阅管理 IAM 身份验证

控制台

  1. 前往集群页面。

    转到集群

  2. 点击您要向其中添加用户的集群的名称。

  3. 点击用户

  4. 点击添加用户账号

  5. 内置身份验证保持选中状态。

    如果您想使用 IAM 对数据库集群进行身份验证和登录,则必须完成其他步骤来准备项目并向新用户授予适当的权限。如需了解详情,请参阅管理 IAM 身份验证

  6. 为新用户输入用户名和密码。

  7. 点击添加

psql

CREATE USER USERNAME WITH PASSWORD PASSWORD;

如需详细了解如何创建和定义数据库用户,请参阅 CREATE USER

创建用户后,您可以使用 psql 客户端中的 ALTER ROLE 命令更改其权限。

gcloud

使用 gcloud alloydb users create 命令。

gcloud alloydb users create USERNAME \
--password=PASSWORD \
--cluster=CLUSTER_ID \
--region=REGION_ID

执行以下变量替换操作:

  • USERNAME:用户的用户名。USERNAME 必须遵循 SQL 标识符的规则:不得包含任何特殊字符,或应用双引号括起来。例如 db_user_1

  • PASSWORD:用户的密码。如需创建不使用密码的用户,请省略此参数。

  • CLUSTER_ID:要将用户添加到的集群的 ID。

  • REGION_ID:集群所在区域的 ID。例如 us-central1

创建用户后,您可以使用 gcloud alloydb users set-roles 命令更改其权限。

此外,您还可以在创建用户时向其授予角色或超级用户权限。为此,请添加 --db-roles--superuser 参数,如以下部分所述。

向数据库用户授予角色

控制台

如需向数据库用户授予角色,请使用 psql 或 gcloud CLI,而不是 Google Cloud 控制台。

psql

GRANT ROLE to USERNAME;

执行以下变量替换操作:

  • USERNAME:用户的用户名。
  • ROLE:要授予用户的角色。例如,如需向用户授予超级用户权限,请向其授予 alloydbsuperuser

gcloud

使用 gcloud alloydb users set-roles 命令指定您希望用户拥有的所有角色。

gcloud alloydb users set-roles USERNAME \
--db-roles=ROLES \
--cluster=CLUSTER_ID \
--region=REGION_ID

执行以下变量替换操作:

  • USERNAME:用户的用户名。

  • ROLES:您希望用户拥有的所有角色的逗号分隔列表。请务必列出所有角色,包括现有角色和新角色。

    如需查找分配给用户的现有角色列表,请运行以下命令:

    gcloud alloydb list users --cluster=CLUSTER_ID --region=REGION_ID

    执行以下变量替换操作:

    • CLUSTER_ID:包含用户的集群的 ID。

    • REGION_ID:集群所在区域的 ID。例如 us-central1

    如需向用户授予超级用户权限,您可以使用 psql 手动向该用户授予 alloydbsuperuser 角色,也可以使用 --superuser=true 参数运行 gcloud alloydb users set-superuser 命令:

    gcloud alloydb users set-superuser USERNAME \
    --superuser=true \
    --cluster=CLUSTER_ID \
    --region=REGION_ID

    执行以下变量替换操作:

    • CLUSTER_ID:包含用户的集群的 ID。

    • REGION_ID:集群所在区域的 ID。例如 us-central1

更改数据库用户的密码

如需为标准 PostgreSQL 数据库用户设置新密码,请按照本部分中的步骤操作。

您无法更改或设置基于 IAM 的用户的密码,因为 IAM 用户不使用密码进行身份验证。如需了解详情,请参阅使用 IAM 账号进行关联

控制台

  1. 前往集群页面。

    转到集群

  2. 点击包含数据库用户的集群的名称。

  3. 点击用户

  4. 在代表用户的行中,点击 打开适用于此用户的操作

  5. 选择更改密码

  6. 指定密码:

    • 如需为此用户设置新密码,请在密码字段中输入密码。

    • 如需为此用户不设置密码,请选中无密码复选框。

  7. 点击确定

psql

ALTER USER USERNAME WITH PASSWORD PASSWORD;

如需详细了解如何更改用户的密码,请参阅 ALTER ROLE

gcloud

使用 gcloud alloydb users set-password 命令:

gcloud alloydb users set-password USERNAME \
--password=PASSWORD \
--cluster=CLUSTER_ID \
--region=REGION_ID

执行以下变量替换操作:

  • USERNAME:用户的用户名。

  • PASSWORD:要为用户分配的新密码。

  • CLUSTER_ID:用户所属集群的 ID。

  • REGION_ID:集群所在区域的 ID。例如 us-central1

撤消数据库用户的角色

控制台

如需撤消用户的角色,请使用 psql 或 gcloud CLI,而不是 Google Cloud 控制台。

psql

您可以撤消一个或多个角色之前授予的权限,也可以撤消用户对某个角色的成员资格。

REVOKE ROLE FROM USERNAME;

如需移除用户的超级用户权限,请从该用户撤消 alloydbsuperuser 角色。

gcloud

如需使用 Google Cloud CLI 撤消角色,请使用 gcloud alloydb users set-roles 命令指定您希望用户拥有的所有角色,并省略要从用户撤消的角色。

gcloud alloydb users set-roles USERNAME \
--db-roles=ROLES \
--cluster=CLUSTER_ID \
--region=REGION_ID

执行以下变量替换操作:

  • USERNAME:用户的用户名。

  • ROLES:您希望用户拥有的所有角色的逗号分隔列表。请务必列出所有角色,包括现有角色和新角色。

    如需查找分配给用户的现有角色列表,请运行以下命令:

    gcloud alloydb list users --cluster=CLUSTER_ID --region=REGION_ID
  • CLUSTER_ID:包含用户的集群的 ID。

  • REGION_ID:集群所在区域的 ID。例如 us-central1

如需撤消超级用户权限,您可以使用 psql 手动移除用户的 alloydbsuperuser 角色,也可以使用 --superuser=false 参数运行 gcloud alloydb users set-superuser 命令。

查看数据库用户列表

控制台

  1. 前往集群页面。

    转到集群

  2. 点击您要查看其用户的集群的名称。

  3. 点击用户

psql

\du 命令会输出一个包含所有数据库用户(包括其群组成员资格)的表格。

\du

gcloud

使用 gcloud alloydb users list 命令。

gcloud alloydb users list \
--cluster=CLUSTER_ID \
--region=REGION_ID

替换以下内容:

  • CLUSTER_ID:包含用户的集群的 ID。

  • REGION_ID:集群所在区域的 ID。例如 us-central1

删除数据库用户

控制台

  1. 前往集群页面。

    转到集群

  2. 点击包含相应用户的集群的名称。

  3. 点击用户

  4. 在代表用户的行中,点击 打开适用于此用户的操作

  5. 选择移除

  6. 移除用户账号?对话框中,点击移除

psql

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

DROP ROLE USERNAME;

gcloud

使用 gcloud alloydb users delete 命令。

gcloud alloydb users delete USERNAME \
--cluster=CLUSTER_ID \
--region=REGION_ID

替换以下内容:

  • USERNAME:用户的用户名。

  • CLUSTER_ID:用户所属集群的 ID。

  • REGION_ID:集群所在区域的 ID。例如 us-central1

后续步骤