PostgreSQL 内置提供了一组具有特定系统级特权的预定义角色。管理员(或具备 CREATEROLE 权限的角色)可以将这些系统级角色直接授予业务用户,从而在无需滥用最高危险的超级用户(SUPERUSER)权限的前提下,安全赋予其特定的特权操作能力:
GRANT pg_read_all_data TO readonly_analyst; GRANT pg_monitor TO ops_user;
常用核心预定义角色包括:
pg_read_all_datapg_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)建立连接。