17.4. 權限

當創建一個數據庫對象時,它屬于一個用戶。該用戶就是執行創建命令的那位。 要改變一個表,索引,序列,或者視圖的所有者,使用 ALTER TABLE 命令。 缺省時,只有所有者(或者超級用戶)可以對該對象做任何事情。為了讓別的用戶也能用它,必須賦予那些用戶權限

我們有以下幾種權限:SELECT(讀), INSERT(追加), UPDATE(寫),DELETERULE(規則)REFERENCES(外鍵), TRIGGERCREATETEMPORARYEXECUTEUSAGE,和 ALL PRIVILEGES。 有關PostgreSQL所支持的權限的更多信息,請參閱 Part VI 裡面的 GRANT 頁獲取更多詳細的信息。 修改或者刪除一個對象的權限總是只有該對象的所有者才有。 要賦予權限,必需使用 GRANT 命令。 要賦權限,用GRANT命令。因此,如果 joe 是一個現存用戶,而 accounts是一個現存表,那麼可以這樣賦予更新權限

GRANT UPDATE ON accounts TO joe;

執行這條命令的用戶必須是表的所有者。要給一個組賦權限,用

GRANT SELECT ON accounts TO GROUP staff;

特殊的"用戶"PUBLIC可以用于給系統中的每一個用戶賦權限。 寫 ALL 在權限聲明位置上表明賦予所有權限。

要廢除一個權限,用 REVOKE 命令:

REVOKE ALL ON accounts FROM PUBLIC;

表所有者的特殊權限(也就是說,做 DROPGRANTREVOKE 等等的權限)總是隱含給所有者的,並且不能賦予或者刪除。 但是表所有者可以廢除他的普通權限,比如給自己做一個只讀的表,就象給別人做一樣。