本页介绍了如何使用基于密码的 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 身份验证。
控制台
前往集群页面。
点击您要向其中添加用户的集群的名称。
点击用户。
点击添加用户账号。
让内置身份验证保持选中状态。
如果您想使用 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 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 账号进行关联。
控制台
前往集群页面。
点击包含数据库用户的集群的名称。
点击用户。
在代表用户的行中,点击
打开适用于此用户的操作。选择更改密码。
指定密码:
如需为此用户设置新密码,请在密码字段中输入密码。
如需为此用户不设置密码,请选中无密码复选框。
点击确定。
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
命令。
查看数据库用户列表
控制台
前往集群页面。
点击您要查看其用户的集群的名称。
点击用户。
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
。