資料庫角色在概念上與作業系統使用者完全分離。在實踐中,保持對應關係可能會很方便,但這並非必需。資料庫角色是全域性性的,覆蓋整個資料庫叢集的安裝(而不是每個單獨的資料庫)。要建立角色,請使用 CREATE ROLE
SQL 命令。
CREATE ROLE name
;
name
遵循 SQL 識別符號的規則:要麼不加修飾,不帶特殊字元;要麼用雙引號括起來。(實際上,您通常會希望在命令中新增額外的選項,例如 LOGIN
。更多細節將在下面介紹。)要刪除現有角色,請使用類似的 DROP ROLE
命令。
DROP ROLE name
;
為了方便起見,提供了 createuser 和 dropuser 程式,它們是圍繞這些 SQL 命令的包裝器,可以從 shell 命令列呼叫。
createusername
dropusername
要確定現有角色的集合,請檢查 pg_roles
系統目錄,例如:
SELECT rolname FROM pg_roles;
或者僅檢視那些能夠登入的角色:
SELECT rolname FROM pg_roles WHERE rolcanlogin;
\du
psql 程式的元命令也用於列出現有角色,非常有用。
為了引導資料庫系統,一個 freshly initialized 的系統總是包含一個預定義的、具有登入能力的角色。這個角色始終是 “超級使用者”,它將擁有與使用 initdb
初始化資料庫叢集的作業系統使用者相同的名稱,除非指定了不同的名稱。這個角色通常命名為 postgres
。要建立更多角色,您必須首先以這個初始角色登入。
每一次連線到資料庫伺服器都是使用某個特定角色的名稱進行的,這個角色決定了在該連線中發出的命令的初始訪問許可權。用於特定資料庫連線的角色名稱由發起連線請求的客戶端以應用程式特定的方式指示。例如,psql
程式使用 -U
命令列選項來指示要連線的角色。許多應用程式預設使用當前作業系統使用者的名稱(包括 createuser
和 psql
)。因此,在角色和作業系統使用者之間保持命名對應關係通常很方便。
給定客戶端連線可以連線的資料庫角色集合由客戶端認證設定確定,如 第 20 章 所解釋。(因此,客戶端不限於連線其作業系統使用者匹配的角色,就像一個人的登入名不必與其真實姓名匹配一樣。)由於角色身份決定了連線客戶端可用的許可權集,因此在設定多使用者環境時仔細配置許可權非常重要。
如果您在文件中發現任何不正確之處、與您對特定功能的體驗不符之處,或需要進一步澄清之處,請使用 此表單 報告文件問題。