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

21.5. 预定义角色 #

PostgreSQL 内置提供了一组具有特定系统级特权的预定义角色。管理员(或具备 CREATEROLE 权限的角色)可以将这些系统级角色直接授予业务用户,从而在无需滥用最高危险的超级用户(SUPERUSER)权限的前提下,安全赋予其特定的特权操作能力:

GRANT pg_read_all_data TO readonly_analyst;
GRANT pg_monitor TO ops_user;

常用核心预定义角色包括:

pg_read_all_data
pg_write_all_data #

允许读取或写入整库所有表、视图以及序列中的数据,绕过常规的对象级权限限制。

pg_monitor #

专用于系统监控的聚合角色,允许安全读取数据库的全部性能监控统计视图与底层运行指标。

pg_checkpoint #

允许非超级用户显式执行 CHECKPOINT 检查点刷盘命令。

pg_create_subscription #

允许非超级用户创建逻辑订阅。

pg_database_owner #

隐式角色,代表当前数据库的所有者。

pg_maintain #

允许对所有表执行 VACUUM、ANALYZE、REINDEX 等维护操作。

pg_read_server_files #

允许执行文件读操作(如从文件执行 COPY)。

pg_signal_autovacuum_worker #

允许向自动清理工作进程发送操作系统信号。

pg_signal_backend #

允许向其他普通后台进程发送取消查询或终止信号(如 pg_cancel_backend() 与 pg_terminate_backend())。

pg_use_reserved_connections #

允许使用保留连接槽位(reserved_connections)建立连接。