?
This document uses PHP Chinese website manual Release
數(shù)據(jù)庫角色從概念上與操作系統(tǒng)用戶是完全無關(guān)的。在實際使用中 把它們對應起來可能比較方便,但這不是必須的。數(shù)據(jù)庫角色在整個 數(shù)據(jù)庫集群中是全局的(而不是每個庫不同)。要創(chuàng)建一個角色,使用SQL命令 CREATE ROLE執(zhí)行:
CREATE ROLE name;
name遵循SQL標識的規(guī)則:要么完全沒有特殊字符,要么用雙引號包圍(實際上你通常會給命令增加額外的選項,比如LOGIN)。要刪除一個現(xiàn)有角色,使用類似的 DROP ROLE 命令:
DROP ROLE name;
為了方便,程序createuser和dropuser提供了對了這些 SQL 命令的封裝。我們可以在 shell 命令上直接調(diào)用它們:
createuser name dropuser name
要檢查現(xiàn)有角色的集合,可以檢查pg_roles系統(tǒng)表,比如:
SELECT rolname FROM pg_roles;
psql的元命令\du也可以用于列出現(xiàn)有角色。
為了能創(chuàng)建初始數(shù)據(jù)庫系統(tǒng),新建立的數(shù)據(jù)庫總是包含一個預定義的 "超級用戶"角色,并且缺省時(除非在運行initdb 時更改過)他將和初始化該數(shù)據(jù)庫集群的用戶有相同的名稱。通常,這個角色名叫 postgres。為了創(chuàng)建更多角色,你必須首先以這個初始用戶 角色連接。
每一個和數(shù)據(jù)庫的連接都必須以一個角色身份進行,這個角色決定在該連接上 的初始權(quán)限。特定數(shù)據(jù)庫連接的角色名是在初始化連接請求的時候聲明的。 比如,psql程序使用-U命令行選項聲 明它代表的角色。許多應用以當前操作系統(tǒng)的用戶名為缺省角色名(這樣的應用 包括createuser和psql)。所以,在系統(tǒng)用戶和數(shù)據(jù) 庫角色之間有某種命名關(guān)系會讓我們工作方便很多。
一個客戶端連接可以使用的角色集合是由客戶認證設(shè)置決定的, 在Chapter 19里面有解釋。因此,一個客戶 端并不局限于以它的操作系統(tǒng)用戶同名的角色進行連接,就像你登錄系統(tǒng)的 名稱不一定要是你的真實姓名一樣。因為角色的身份決定了一個連接的權(quán)限, 所以在多用戶環(huán)境里仔細配置這些內(nèi)容是非常重要的。