选择 打开 改范围 完整检索页
受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10
当前 PostgreSQL 版本不在支持生命周期内。
您可以参阅当前版本的对应页面,或其他在上面列出的活跃大版本。

21.5. 默认角色 #

PostgreSQL提供一组默认角色,用于访问某些常用的特权功能和信息。管理员可以将这些角色 GRANT 给其环境中的用户和/或其他角色,使这些用户能够访问指定的功能和信息。

默认角色在Table 21.1中介绍。请注意,随着新功能的加入,各默认角色的具体权限可能会在将来发生变化。管理员应关注发行说明中的变更。

Table 21.1. 默认角色

角色 允许的访问
pg_read_all_settings 读取所有配置变量,即使是那些通常仅对超级用户可见的变量。
pg_read_all_stats 读取所有 pg_stat_* 视图,并使用各种与统计信息相关的扩展,即使是那些通常仅对超级用户可见的扩展。
pg_stat_scan_tables 执行可能在表上持有ACCESS SHARE锁并且持续较长时间的监控函数。
pg_monitor 读取或执行各种监控视图和函数。该角色是pg_read_all_settingspg_read_all_statspg_stat_scan_tables的成员。
pg_signal_backend 向另一个后端发送信号,以取消查询或终止其会话。
pg_read_server_files 允许使用COPY和其他文件访问函数,从服务器上数据库可访问的任何位置读取文件。
pg_write_server_files 允许使用COPY和其他文件访问函数,向服务器上数据库可访问的任何位置写入文件。
pg_execute_server_program 允许使用COPY和其他允许执行服务器端程序的函数,以数据库运行所用用户的身份在数据库服务器上执行程序。

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

pg_signal_backend角色旨在让管理员能够允许受信任但非超级用户的角色向其他后端发送信号。目前这个角色允许发送信号来取消另一个后端上的查询或终止其会话。不过,被授予此角色的用户不能向由超级用户拥有的后端发送信号。见Section 9.26.2

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

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

管理员可以使用 GRANT 命令将这些角色的访问权限授予用户,例如:

GRANT pg_signal_backend TO admin_user;