資料庫角色在概念上與作業系統使用者完全分離。實際上,維護對應關係可能很方便,但這不是必需的。資料庫角色在整個資料庫叢集安裝中是全域的(而不是每個單獨的資料庫)。要建立角色,請使用 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;
psql 程式的 \du
中繼命令也可用於列出現有角色。
為了引導資料庫系統,新初始化的系統始終包含一個預定義的能夠登入的角色。此角色始終是「超級使用者」,並且它將具有與使用 initdb
初始化資料庫叢集的作業系統使用者相同的名稱,除非指定了不同的名稱。此角色通常命名為 postgres
。為了建立更多角色,您必須首先以這個初始角色身分連線。
與資料庫伺服器的每個連線都是使用特定角色的名稱建立的,並且此角色確定在該連線中發出的命令的初始存取權限。用於特定資料庫連線的角色名稱由啟動連線請求的用戶端以應用程式特定的方式指示。例如,psql
程式使用 -U
命令列選項來指示要連線的角色。許多應用程式預設採用目前作業系統使用者的名稱(包括 createuser
和 psql
)。因此,維護角色和作業系統使用者之間的命名對應關係通常很方便。
給定用戶端連線可以連線為哪些資料庫角色,由用戶端驗證設定確定,如 第 20 章 中所述。(因此,用戶端不僅限於以與其作業系統使用者匹配的角色連線,就像一個人的登入名稱不必與他或她的真實姓名匹配一樣。)由於角色身分確定了連線用戶端可用的權限集,因此在設定多使用者環境時仔細配置權限非常重要。
如果您在文件中發現任何不正確、與您對特定功能的體驗不符或需要進一步澄清的地方,請使用此表單來報告文件問題。