本页面介绍如何使用基于密码的 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 身份验证。
控制台
转到集群页面。
点击您要向其中添加用户的集群的名称。
点击用户。
点击添加用户账号。
保留内置身份验证处于选中状态。
如果您想使用 IAM 进行身份验证并登录数据库集群,则必须完成额外的步骤来准备项目,并向新用户授予适当的权限。如需了解详情,请参阅管理 IAM 身份验证。
为新用户输入用户名和密码。
点击添加。
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 账号进行连接。
控制台
转到集群页面。
点击包含数据库用户的集群的名称。
点击用户。
在相应用户对应的行上,点击
打开适用于此用户的操作。选择更改密码。
指定密码:
如需为此用户设置新密码,请在密码字段中输入密码。
如需为此用户设置无密码,请选中无密码复选框。
点击确定。
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
命令。
查看数据库用户的列表
控制台
转到集群页面。
点击要查看其用户的集群的名称。
点击用户。
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
。
删除数据库用户
控制台
转到集群页面。
点击包含相应用户的集群的名称。
点击用户。
在相应用户对应的行上,点击
打开适用于此用户的操作。选择移除。
在移除用户账号?对话框中,点击移除。
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
。