↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
预发布版本文档。 PostgreSQL 19beta4 为测试版本,最终发布内容可能有所不同。

21.5. 预定义角色 #

PostgreSQL 提供了一组预定义角色,它们提供对某些常见且需要权限的能力和信息的访问。管理员(包括具有 CREATEROLE 权限的角色)可以把这些角色 GRANT 给其环境中的用户和/或其他角色,从而让这些用户获得所指定的能力和信息。例如:

GRANT pg_signal_backend TO admin_user;

警告

授予这些角色时应当谨慎,确保它们只在需要时使用,并理解这些角色会授予对需要特权才能访问的信息的访问权限。

下文介绍这些预定义角色。请注意,随着将来增加更多能力,各个角色的具体权限可能会发生变化。管理员应关注发行说明中的变更。

pg_checkpoint #

pg_checkpoint 允许执行 CHECKPOINT 命令。

pg_create_subscription #

pg_create_subscription 允许在数据库上具有 CREATE 权限的用户执行 CREATE SUBSCRIPTION。

pg_database_owner #

pg_database_owner 始终恰好有一个隐式成员:当前数据库的拥有者。它不能被授予任何角色中的成员资格,也不能有任何角色被授予 pg_database_owner 中的成员资格。不过,和其他角色一样,它可以拥有对象并获得访问权限授权。因此,一旦 pg_database_owner 在某个模板数据库中拥有权限,由该模板实例化的每个数据库的拥有者都将拥有这些权限。最初,这个角色拥有 public 模式,因此每个数据库拥有者都管理该模式在本数据库中的使用。

pg_maintain #

pg_maintain 允许在所有关系上执行 VACUUM、ANALYZE、CLUSTER、REPACK、REFRESH MATERIALIZED VIEW、REINDEX 以及 LOCK TABLE,其效果就像对这些对象拥有 MAINTAIN 权限一样。

pg_monitor
pg_read_all_settings
pg_read_all_stats
pg_stat_scan_tables #

这些角色旨在让管理员能够方便地为监控数据库服务器配置一个角色。它们授予一组常见权限,使该角色能够读取各种有用的配置设置、统计信息以及其他通常仅限超级用户查看的系统信息。

pg_monitor 允许读取或执行各种监控视图和函数。该角色是 pg_read_all_settings、pg_read_all_stats 和 pg_stat_scan_tables 的成员。

pg_read_all_settings 允许读取所有配置变量,即使是那些通常仅对超级用户可见的变量。

pg_read_all_stats 允许读取所有 pg_stat_* 视图,并使用各种与统计信息相关的扩展,包括通常仅对超级用户可见的内容。

pg_stat_scan_tables 允许执行可能在表上持有 ACCESS SHARE 锁并持续较长时间的监控函数(例如 pgrowlocks(text),见 pgrowlocks 扩展)。

pg_read_all_data
pg_write_all_data #

pg_read_all_data 允许读取所有数据(表、视图、序列、大对象),其效果就像对这些对象拥有 SELECT 权限并对所有模式拥有 USAGE 权限一样。该角色不会绕过行级安全(RLS)策略。如果正在使用 RLS,管理员可能希望对被授予此角色的角色设置 BYPASSRLS。

pg_write_all_data 允许写入所有数据(表、视图、序列、大对象),其效果就像对这些对象拥有 INSERT、UPDATE 和 DELETE 权限并对所有模式拥有 USAGE 权限一样。该角色不会绕过行级安全(RLS)策略。如果正在使用 RLS,管理员可能希望对被授予此角色的角色设置 BYPASSRLS。

pg_read_server_files
pg_write_server_files
pg_execute_server_program #

这些角色旨在让管理员能够使受信任但非超级用户的角色能够以数据库运行所用操作系统用户的身份访问文件并在数据库服务器上运行程序。它们在直接访问文件时会绕过所有数据库级权限检查,并且可被用来获得超级用户级别的访问能力。因此,向用户授予这些角色时必须极其谨慎。

pg_read_server_files 允许使用 COPY 和其他文件访问函数,从服务器上数据库可访问的任何位置读取文件。

pg_write_server_files 允许使用 COPY 和其他文件访问函数,向服务器上数据库可访问的任何位置写入文件。

pg_execute_server_program 允许使用 COPY 和其他允许执行服务器端程序的函数,以数据库运行所用用户的身份在数据库服务器上执行程序。

pg_signal_autovacuum_worker #

pg_signal_autovacuum_worker 允许向自动清理工作进程发送信号,以取消当前表的清理操作或终止其会话。见第 9.29.2 节。

pg_signal_backend #

pg_signal_backend 允许向另一个后端发送信号,以取消查询或终止其会话。注意,这个角色不允许向由超级用户拥有的后端发送信号。见第 9.29.2 节。

pg_use_reserved_connections #

pg_use_reserved_connections 允许使用通过 reserved_connections 保留的连接槽。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.