5.6. 權限
一旦一個對象被建立,它會被配置設定一個所有者。所有者通常是執行建立語句的角色。對于大部分類型的對象,初始狀态下隻有所有者(或者超級使用者)能夠對該對象做任何事情。為了允許其他角色使用它,必須配置設定權限。
有多種不同的權限:
SELECT
、
INSERT
UPDATE
DELETE
TRUNCATE
REFERENCES
TRIGGER
CREATE
CONNECT
TEMPORARY
EXECUTE
以及
USAGE
。可以應用于一個特定對象的權限随着對象的類型(表、函數等)而不同。PostgreSQL所支援的不同類型的完整權限資訊請參考
GRANT。下面的章節将簡單介紹如何使用這些權限。
修改或銷毀一個對象的權力通常是隻有所有者才有的權限。
一個對象可以通過該對象類型相應的
ALTER
指令來重新配置設定所有者,例如
ALTER TABLE。超級使用者總是可以做到這點,普通角色隻有同時是對象的目前所有者(或者是擁有角色的一個成員)以及新擁有角色的一個成員時才能做同樣的事。
要配置設定權限,可以使用
GRANT
指令。例如,如果
joe
是一個已有角色,而
accounts
是一個已有表,更新該表的權限可以按如下方式授權:
GRANT UPDATE ON accounts TO joe;
用
ALL
取代特定權限會把與對象類型相關的所有權限全部授權。
一個特殊的名為
PUBLIC
的“角色”可以用來向系統中的每一個角色授予一個權限。同時,在資料庫中有很多使用者時可以設定“組”角色來幫助管理權限。詳見
第 21 章。
為了撤銷一個權限,使用
REVOKE
指令:
REVOKE ALL ON accounts FROM PUBLIC;
對象擁有者的特殊權限(即執行
DROP
GRANT
REVOKE
等的權力)總是隐式地屬于擁有者,并且不能被授予或撤銷。但是對象擁有者可以選擇撤銷他們自己的普通權限,例如把一個表變得對他們自己和其他人隻讀。
一般情況下,隻有對象擁有者(或者超級使用者)可以授予或撤銷一個對象上的權限。但是可以在授予權限時使用“with grant option”來允許接收人将權限轉授給其他人。如果後來授予選項被撤銷,則所有從接收人那裡獲得的權限(直接或者通過授權鍊獲得)都将被撤銷。更多詳情請見
和
REVOKE參考頁。
本文轉自PostgreSQL中文社群,原文連結: