本页介绍了 AlloyDB for PostgreSQL 如何与 PostgreSQL 用户角色配合使用。
AlloyDB 中的用户角色简介
AlloyDB 数据库使用 PostgreSQL 的标准角色概念。角色可以充当数据库用户或一组用户,或同时充当这两者。
用户角色具有 LOGIN
特权,可让用户登录系统。群组角色包含具有各种权限的成员角色,您可以一次性向所有成员授予或从所有成员撤消这些权限。
AlloyDB 预定义的 PostgreSQL 角色
PostgreSQL 具有一组具有各种权限的预定义角色。AlloyDB 会向这组 PostgreSQL 预定义角色添加多个用户和群组角色。
下表列出了 AlloyDB 预定义的 PostgreSQL 角色:
角色名称 | 权限 |
---|---|
alloydbsuperuser |
CREATEROLE 、CREATEDB 和 LOGIN 。 |
postgres |
CREATEROLE 、CREATEDB 和 LOGIN 。 |
alloydbimportexport |
CREATEROLE 和CREATEDB 。 |
alloydbagent |
CREATEROLE 和CREATEDB 。 |
alloydbreplica |
REPLICATION |
alloydbiamuser |
默认情况下,此角色没有任何权限。 |
以下部分介绍了一些最常用的 AlloyDB 专用角色。
alloydbsuperuser
群组角色
alloydbsuperuser
角色是一种预定义角色,用于初始设置数据库系统和执行其他超级用户任务。此角色具有以下权限:
- 创建需要超级用户权限的扩展程序
- 创建事件触发器
- 创建复制用户
- 创建复制发布和订阅
作为一项托管式服务,AlloyDB 不允许您向用户授予 PostgreSQL superuser
角色。不过,您可以通过向任何数据库用户角色授予 alloydbsuperuser
角色来向其授予 AlloyDB 超级用户权限。
postgres
用户角色
postgres
用户属于 alloydbsuperuser
角色。创建 AlloyDB 集群时,您需要为 postgres
用户角色分配密码。然后,您可以使用 postgres
用户角色登录系统,以创建数据库、其他角色等。
alloydbimportexport
用户角色
创建 AlloyDB 集群时,系统会创建默认用户 alloydbimportexport
,并为其授予导入和导出操作所需的一组最低权限。
您可以选择自行创建用户来执行这些操作。如果您未创建自定义 alloydbimportexport
用户,系统将使用默认 alloydbimportexport
用户执行导入和导出操作。
alloydbimportexport
用户是系统用户;您无法直接使用 alloydbimportexport
用户在 PostgreSQL 数据库中登录或执行其他操作。
alloydbiamuser
群组角色
alloydbiamuser
群组角色中的数据库用户通过使用身份和访问管理(IAM)对 AlloyDB 实例进行身份验证,而不是使用基于密码的标准 PostgreSQL 身份验证。
AlloyDB 不允许您使用 GRANT
PostgreSQL 命令或类似方法向用户授予此角色。不过,您可以使用 AlloyDB 管理工具来创建和管理基于 Identity and Access Management 的数据库用户。如需了解详情,请参阅管理 IAM 身份验证。
在 AlloyDB 中创建其他 PostgreSQL 用户
您可以创建其他 PostgreSQL 用户或角色。这些用户拥有与 postgres
用户相同的一组权限:CREATE ROLE
、CREATEDB
和 LOGIN
。如需详细了解这些特权,请参阅 CREATE ROLE
。
您可以使用 ALTER ROLE
命令更改任何用户的权限。如果您使用 psql
客户端创建新用户,则可以选择将其与其他角色相关联,或分配不同的权限。
管理用户
您可以使用 Google Cloud CLI 或 PostgreSQL 命令创建和管理 AlloyDB 用户角色。以下部分将展示使用这两种方法执行常见用户管理任务。
准备工作
如需使用 PostgreSQL 命令管理集群中的用户,您需要满足以下条件:
- 有权访问
psql
客户端 - 对
postgres
数据库用户或具有适当管理员权限的其他用户角色的访问权限
若要使用 Google Cloud 控制台或 Google Cloud CLI 管理集群中的用户,该集群必须有一个主实例。如果您的集群没有主实例,则必须先创建一个主实例,然后才能管理用户。
创建数据库用户
如需创建直接使用用户名和密码(也称为内置身份验证)与数据库进行身份验证的数据库用户,请按照本部分中的步骤操作。
如需改为创建使用 Identity and Access Management 进行身份验证的数据库用户,请参阅管理 IAM 身份验证。
控制台
前往集群页面。
点击您要向其中添加用户的集群的名称。
点击用户。
点击添加用户账号。
让内置身份验证保持选中状态。
您可以改为选择 Cloud IAM,以创建使用 IAM 进行身份验证的数据库用户。若选择此选项,您需要执行额外的步骤来准备项目并向新的数据库用户授予适当的权限。如需了解详情,请参阅管理 IAM 身份验证。
为新用户输入用户名和密码。
点击 Add(添加)。
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
:新用户角色的用户名。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;
如需向用户授予超级用户权限,请向该用户授予 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
。
如需向用户授予超级用户权限,您可以使用前面介绍的命令手动向该用户授予 alloydbsuperuser
角色,也可以使用 --superuser=true
参数运行 gcloud alloydb users set-superuser
命令:
gcloud alloydb users set-superuser USERNAME \
--superuser=true \
--cluster=CLUSTER_ID \
--region=REGION_ID
更改数据库用户的密码
如需为标准 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
。
如需撤消超级用户权限,您可以使用前面介绍的命令手动移除用户的 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
。