?
This document uses PHP Chinese website manual Release
一個數(shù)據(jù)庫角色可以有一系列屬性,這些屬性定義他的權(quán)限,以及與客戶認(rèn)證系統(tǒng)的交互。
只有具有LOGIN屬性的角色才可以用作數(shù)據(jù)庫連接的初始角色名。一個帶有LOGIN屬性的角色可以認(rèn)為是和"數(shù)據(jù)庫用戶"相同的事物。要創(chuàng)建一個具有登錄權(quán)限的角色,用下列之一:
CREATE ROLE name LOGIN; CREATE USER name;
除了CREATE USER默認(rèn)賦予 LOGIN 之外,CREATE USER等價于CREATE ROLE(默認(rèn)不賦予LOGIN)。
數(shù)據(jù)庫超級用戶超越所有權(quán)限檢查。這是一個危險的權(quán)限,應(yīng)該小心使用; 最好使用非超級用戶完成你的大多數(shù)工作。要創(chuàng)建數(shù)據(jù)庫超級用戶, 用CREATE ROLE name SUPERUSER 命令。你必須用已經(jīng)是超級用戶的角色執(zhí)行這條命令。
角色要想創(chuàng)建數(shù)據(jù)庫,必須明確給出權(quán)限(對于超級用戶是例外, 因為他們超越所有權(quán)限檢查)。要創(chuàng)建這樣的角色, 用CREATE ROLE name CREATEDB命令。
角色要想創(chuàng)建角色,必須明確給出權(quán)限(對于超級用戶是例外, 因為他們超越所有權(quán)限檢查)。要創(chuàng)建這樣的角色, 用CREATE ROLE name CREATEROLE命令。 一個帶有CREATEROLE屬性的角色也可以更改和刪除其它角色, 以及給其它角色賦予或者撤銷成員關(guān)系。不過,要創(chuàng)建、更改、刪除一個 超級用戶角色的成員關(guān)系,需要具有超級用戶屬性;只有CREATEROLE還不夠。
只有在客戶認(rèn)證方法要求與數(shù)據(jù)庫建立連接必須使用口令的時候, 口令才比較重要。password, md5認(rèn)證方法使用口令。 數(shù)據(jù)庫口令與操作系統(tǒng)口令是無關(guān)的。 在創(chuàng)建角色的時候可以這樣聲明一個口令: CREATE ROLE name PASSWORD string' 。
一個角色的屬性可以在創(chuàng)建后用ALTER ROLE修改。 參考CREATE ROLE和ALTER ROLE 的手冊獲取細(xì)節(jié)。
Tip: 創(chuàng)建一個具有CREATEDB和CREATEROLE權(quán)限, 但是并非超級用戶的角色是一個很好的習(xí)慣, 你可以使用這個角色進行所有日常的數(shù)據(jù)庫和角色管理。 這個方法避免了以超級用戶操作時,發(fā)生誤操作導(dǎo)致的嚴(yán)重后果。
一個角色也可以為許多運行時配置設(shè)置針對其個人的缺省, 那些配置在Chapter 18里描述。比如, 如果出于某種原因你想在所有你做的連接中關(guān)閉索引掃描(不是個好主意), 你可以用:
ALTER ROLE myname SET enable_indexscan TO off;
這樣就會保存該設(shè)置(但是不是立即設(shè)置)。然后, 在這個角色隨后的連接中就好像在會話開始之后都立即 SET enable_indexscan TO off 了一樣。你也可以在會話中修改這個設(shè)置;它只是缺省。 要撤銷任何這樣的設(shè)置,使用 ALTER ROLE rolename RESET varname ; 。請注意,對那些沒有LOGIN屬性的角色, 這些角色相關(guān)的缺省值幾乎沒什么用,因為它們從來不會被調(diào)用。