PostgreSQL 18 中文参考文档(未翻译部分保留英文)🌐 切换到英文原版 →

21.3. 角色成员关系 #

将用户归拢为群组能够极大精简权限管理:只需将相关权限授予群组角色本身,群组内部的所有成员用户即可自动继承对应权限。在 PostgreSQL 中,通过创建一个代表群组的角色,随后将该群组的成员资格授予具体用户角色来实现这一机制。

创建组角色(通常不具备登录权限):

CREATE ROLE admin_staff;

随后将该组的成员资格授予具体用户:

GRANT admin_staff TO alice, bob;

也可以使用 REVOKE 撤销成员资格:

REVOKE admin_staff FROM bob;

如果一个成员角色具有 INHERIT 属性,它在执行普通查询时会自动直接行使群组角色的全部对象权限。此外,无论是否继承权限,成员角色都可以通过执行 SET ROLE 命令,在当前会话中将自身运行身份就地临时切换为群组角色身份:

SET ROLE admin_staff;
SELECT current_user;
RESET ROLE;