2025年9月25日: PostgreSQL 18 釋出!
支援的版本:當前 (18) / 17 / 16 / 15 / 14
開發版本:devel

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 允許在所有關係上執行 VACUUMANALYZECLUSTERREFRESH MATERIALIZED VIEWREINDEXLOCK TABLE,就好像對這些物件具有 MAINTAIN 許可權一樣。

pg_monitor
pg_read_all_settings
pg_read_all_stats
pg_stat_scan_tables #

這些角色旨在讓管理員能夠輕鬆配置一個用於監控資料庫伺服器的角色。它們授予一組常用許可權,允許角色讀取各種有用的配置設定、統計資訊以及通常只對超級使用者可見的其他系統資訊。

pg_monitor 允許讀取/執行各種監控檢視和函式。此角色是 pg_read_all_settingspg_read_all_statspg_stat_scan_tables 的成員。

pg_read_all_settings 允許讀取所有配置變數,即使是通常只對超級使用者可見的變數。

pg_read_all_stats 允許讀取所有 pg_stat_* 檢視並使用各種統計資訊相關擴充套件,即使是通常只對超級使用者可見的。

pg_stat_scan_tables 允許執行監控函式,這些函式可能會對錶持有 ACCESS SHARE 鎖,可能持續很長時間(例如,pgrowlocks 擴充套件中的 pgrowlocks(text))。

pg_read_all_data
pg_write_all_data #

pg_read_all_data 允許讀取所有資料(表、檢視、序列),就好像對這些物件具有 SELECT 許可權以及對所有模式都具有 USAGE 許可權一樣。此角色不會繞過行級安全 (RLS) 策略。如果正在使用 RLS,管理員可能希望為授予此角色的角色設定 BYPASSRLS

pg_write_all_data 允許寫入所有資料(表、檢視、序列),就好像對這些物件具有 INSERTUPDATEDELETE 許可權以及對所有模式都具有 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 允許向 autovacuum 工作程序傳送訊號,以取消當前表的 vacuum 或終止其會話。請參閱 9.28.2 節

pg_signal_backend #

pg_signal_backend 允許向另一個後端傳送訊號,以取消查詢或終止其會話。請注意,此角色不允許向超級使用者擁有的後端傳送訊號。請參閱 9.28.2 節

pg_use_reserved_connections #

pg_use_reserved_connections 允許使用透過 reserved_connections 保留的連線槽。

提交更正

如果您在文件中發現任何不正確、與您對特定功能的實際體驗不符或需要進一步說明的內容,請使用此表單報告文件問題。