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

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

在 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 users list --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 users list --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

后续步骤