REVOKE
名稱:REVOKE — 廢除某用戶或某組或所有用戶訪問許可權.
REVOKE privilege [, ...]
ON object [, ...]
FROM { PUBLIC | GROUP ER">gBLE> | username }
輸入
privilege
可能的許可權是
SELECT
對選定表/視圖的所有列/欄位的訪問許可權.
INSERT
對選定表的所有列/欄位的插入數據的許可權.
UPDATE
對選定表所有列/欄位的更新許可權.
DELETE
對選定表所有列/欄位的刪除許可權.
RULE
在表/視圖上定義規則的許可權.(參閱 CREATE RULE)。
ALL
廢止所有許可權.
object
要廢除訪問的對象名.可能的對象有:
table
view
sequence
index
group
被廢除許可權的組的名稱.
username
被廢除許可權的用戶的名稱.使用 PUBLIC 關鍵字廢除所有用戶.
PUBLIC
廢止所有用戶的許可權.
輸出
CHANGE
成功執行返回的信息.
ERROR
如果對象不可用或不可能廢止組或用戶的許可權.
描述
REVOKE 允許對象的創建者廢止以前賦予過的某用戶,組或所有用戶(用 PUBLIC)許可權.
注意
使用 psql \z 命令獲取現存對象的許可權的更多信息:
Database = lusitania
+------------------+---------------------------------------------+
| Relation | Grant/Revoke Permissions |
+------------------+---------------------------------------------+
| mytable | {"=rw","miriam=arwR","group todos=rw"} |
+------------------+---------------------------------------------+
Legend:
uname=arwR -- privileges granted to a user
group gname=arwR -- privileges granted to a GROUP
=arwR -- privileges granted to PUBLIC
r -- SELECT
w -- UPDATE/DELETE
a -- INSERT
R -- RULE
arwR -- ALL
小技巧: 目前,要創建一個組 GROUP 你只能手工的向表 pg_group 里插入數據:(譯註:這部分內容比較舊,目前已經有CREATE GROUP 語句了。)
INSERT INTO pg_group VALUES ('todos');
CREATE USER miriam IN GROUP todos;
用法
廢除所有用戶對表 films 的插入許可權:
REVOKE INSERT ON films FROM PUBLIC;
廢除用戶 manuel 對視圖 kinds 的所有許可權:
REVOKE ALL ON kinds FROM manuel;
兼容性
SQL92
SQL92 的 REVOKE 語法有一些附加的功能,包括一些用於廢止表中某些列/欄位的許可權:
REVOKE { SELECT | DELETE | USAGE | ALL PRIVILEGES } [, ...]
ON object
FROM { PUBLIC | username [, ...] } { RESTRICT | CASCADE }
REVOKE { INSERT | UPDATE | REFERENCES } [, ...] [ ( column [, ...] ) ]
ON object
FROM { PUBLIC | username [, ...] } { RESTRICT | CASCADE }
請參考 GRANT 命令獲取獨立的列/欄位的細節.
REVOKE GRANT OPTION FOR privilege [, ...]
ON object
FROM { PUBLIC | username [, ...] } { RESTRICT | CASCADE }
廢除一個用戶給其他用戶賦予許可權的許可權.請參考 GRANT 命令獲取獨立的列/欄位的細節.
可能的對象
[ TABLE ] 表/視圖
CHARACTER SET 字元集
COLLATION 集合
TRANSLATION 轉換
DOMAIN 域
如果用戶1 賦予了用戶2的許可權帶著(賦予選項) WITH GRANT OPTION ,然後用戶2 給了用戶3,則用戶1可以使用 CASCADE 關鍵字廢除用戶2和3的許可權.
如果用戶1給予用戶2許可權帶著(賦予選項)WITH GRANT OPTION,然後用戶2又把它給予了用戶3,則如果用戶1 試圖帶著 RESTRICT 關鍵字廢除這個許可權就會失敗.