REVOKE
REVOKE — 从一个用户、一个组或所有用户回收访问权限。
大纲
REVOKEprivilege[, ...] ONobject[, ...] FROM { PUBLIC | GROUPgroup|username}
输入
privilege可能的权限有:
- SELECT
访问一个指定表/视图的所有列的权限。
- INSERT
向一个指定表的所有列插入数据的权限。
- UPDATE
更新一个指定表的所有列的权限。
- DELETE
从一个指定表删除行的权限。
- RULE
在表/视图上定义规则的权限。(见
CREATE RULE)。- ALL
回收所有权限。
object要回收访问权限的对象的名称。可能的对象有:
表
视图
序列
索引
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 中插入数据:
INSERT INTO pg_group VALUES ('todos');
CREATE USER miriam IN GROUP todos;
用法
-- revoke insert privilege from all users on table films: -- REVOKE INSERT ON films FROM PUBLIC; -- revoke all privileges from user manuel on view kinds: -- REVOKE ALL ON kinds FROM manuel;
兼容性
SQL92
SQL92 的 REVOKE
语法有更多回收权限的能力,包括对表中个别列的权限:
REVOKE { SELECT | DELETE | USAGE | ALL PRIVILEGES } [, ...] ONobjectFROM { PUBLIC |username[, ...] } { RESTRICT | CASCADE } REVOKE { INSERT | UPDATE | REFERENCES } [, ...] [ (column[, ...] ) ] ONobjectFROM { PUBLIC |username[, ...] } { RESTRICT | CASCADE }各个字段的细节请参阅
GRANT命令。REVOKE GRANT OPTION FOR
privilege[, ...] ONobjectFROM { PUBLIC |username[, ...] } { RESTRICT | CASCADE }回收一个用户把指定权限授予其他人的权力。各个字段的细节请参阅
GRANT命令。
可能的对象有:
| [ TABLE ] 表/视图 |
| CHARACTER SET 字符集 |
| COLLATION 排序规则 |
| TRANSLATION 转换 |
| DOMAIN 域 |
如果 user1 把一个权限带 WITH GRANT OPTION 地授予 user2,而 user2 又把它授予 user3,那么 user1 可以使用 CASCADE 关键字级联回收该权限。
如果 user1 把一个权限带 WITH GRANT OPTION 地授予 user2,而 user2 又把它授予 user3,那么当 user1 试图回收该权限时,如果他/她指定了 RESTRICT 关键字,回收将失败。