400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
YMatrix 文档
关于 YMatrix
标准集群部署
数据写入
数据迁移
数据查询
运维监控
参考指南
工具指南
数据类型
存储引擎
执行引擎
系统配置参数
SQL 参考
常见问题(FAQ)
新架构 FAQ
集群部署 FAQ
SQL 查询 FAQ
MatrixGate FAQ
运维 FAQ
监控告警 FAQ
PXF FAQ
PLPython FAQ
性能 FAQ
删除访问权限。
REVOKE [GRANT OPTION FOR] { {SELECT | INSERT | UPDATE | DELETE
| REFERENCES | TRIGGER | TRUNCATE } [, ...] | ALL [PRIVILEGES] }
ON { [TABLE] table_name [, ...]
| ALL TABLES IN SCHEMA schema_name [, ...] }
FROM { [ GROUP ] role_name | PUBLIC} [, ...]
[CASCADE | RESTRICT]
REVOKE [ GRANT OPTION FOR ] { { SELECT | INSERT | UPDATE
| REFERENCES } ( column_name [, ...] )
[, ...] | ALL [ PRIVILEGES ] ( column_name [, ...] ) }
ON [ TABLE ] table_name [, ...]
FROM { [ GROUP ] role_name | PUBLIC } [, ...]
[ CASCADE | RESTRICT ]
REVOKE [GRANT OPTION FOR] { {USAGE | SELECT | UPDATE} [,...]
| ALL [PRIVILEGES] }
ON { SEQUENCE sequence_name [, ...]
| ALL SEQUENCES IN SCHEMA schema_name [, ...] }
FROM { [ GROUP ] role_name | PUBLIC } [, ...]
[CASCADE | RESTRICT]
REVOKE [GRANT OPTION FOR] { {CREATE | CONNECT
| TEMPORARY | TEMP} [, ...] | ALL [PRIVILEGES] }
ON DATABASE database_name [, ...]
FROM { [ GROUP ] role_name | PUBLIC} [, ...]
[CASCADE | RESTRICT]
REVOKE [ GRANT OPTION FOR ]
{ USAGE | ALL [ PRIVILEGES ] }
ON DOMAIN domain_name [, ...]
FROM { [ GROUP ] role_name | PUBLIC } [, ...]
[ CASCADE | RESTRICT ]
REVOKE [ GRANT OPTION FOR ]
{ USAGE | ALL [ PRIVILEGES ] }
ON FOREIGN DATA WRAPPER fdw_name [, ...]
FROM { [ GROUP ] role_name | PUBLIC } [, ...]
[ CASCADE | RESTRICT ]
REVOKE [ GRANT OPTION FOR ]
{ USAGE | ALL [ PRIVILEGES ] }
ON FOREIGN SERVER server_name [, ...]
FROM { [ GROUP ] role_name | PUBLIC } [, ...]
[ CASCADE | RESTRICT ]
REVOKE [GRANT OPTION FOR] {EXECUTE | ALL [PRIVILEGES]}
ON { FUNCTION funcname ( [[argmode] [argname] argtype
[, ...]] ) [, ...]
| ALL FUNCTIONS IN SCHEMA schema_name [, ...] }
FROM { [ GROUP ] role_name | PUBLIC} [, ...]
[CASCADE | RESTRICT]
REVOKE [GRANT OPTION FOR] {USAGE | ALL [PRIVILEGES]}
ON LANGUAGE langname [, ...]
FROM { [ GROUP ] role_name | PUBLIC} [, ...]
[ CASCADE | RESTRICT ]
REVOKE [GRANT OPTION FOR] { {CREATE | USAGE} [, ...]
| ALL [PRIVILEGES] }
ON SCHEMA schema_name [, ...]
FROM { [ GROUP ] role_name | PUBLIC} [, ...]
[CASCADE | RESTRICT]
REVOKE [GRANT OPTION FOR] { CREATE | ALL [PRIVILEGES] }
ON TABLESPACE tablespacename [, ...]
FROM { [ GROUP ] role_name | PUBLIC } [, ...]
[CASCADE | RESTRICT]
REVOKE [ GRANT OPTION FOR ]
{ USAGE | ALL [ PRIVILEGES ] }
ON TYPE type_name [, ...]
FROM { [ GROUP ] role_name | PUBLIC } [, ...]
[ CASCADE | RESTRICT ]
REVOKE [ADMIN OPTION FOR] parent_role [, ...]
FROM [ GROUP ] member_role [, ...]
[CASCADE | RESTRICT]
REVOKE命令从一个或多个角色撤消先前授予的特权。 关键字PUBLIC指所有角色的隐式定义组。
有关特权类型的含义,请参见GRANT命令的描述。
请注意,任何特定角色将具有直接授予它的特权,授予该角色当前成员的任何角色的特权以及授予PUBLIC的特权的总和。 因此,例如,从PUBLIC撤消SELECT特权并不一定意味着所有角色都对该对象失去SELECT特权: 直接或通过其他角色授予它的那些人仍然拥有该特权。 同样,如果PUBLIC或其他成员身份角色仍然具有SELECT权限, 则从用户撤消SELECT可能不会阻止该用户使用SELECT。
如果指定了GRANT OPTION FOR,则仅撤销特权的授予选项,而不撤销特权本身。 否则,特权和授予选项都将被撤销。
如果某个角色拥有带有“授予”选项的特权并将其授予其他角色,则这些其他角色所拥有的特权称为“从属特权”。 如果第一个角色持有的特权或授予选项被撤销,并且存在从属特权, 则如果指定了CASCADE,那些从属特权也将被撤销,否则撤销操作将失败。 此递归撤销仅影响通过可追溯到此REVOKE命令对象的角色的角色链授予的特权。 因此,如果还通过其他角色授予了特权,则受影响的角色可以有效地保留特权。
当您撤消对表的特权时,YMatrix 数据库也会撤消对表的每一列的相应列特权(如果有)。 另一方面,如果已授予角色某个表的特权,则从单独列中撤消相同的特权将无效。
撤销角色成员身份时,GRANT OPTION改为ADMIN OPTION,但行为类似。
参见GRANT
用户只能撤消该用户直接授予的那些特权。 例如,如果用户A向用户B授予了具有授予选项的特权,而用户B又将其授予了用户C,则用户A无法直接从C撤消该特权。 而是,用户A可以撤消用户B的授予选项,并使用CASCADE选项,以便依次从用户C撤消特权。 例如,如果A和B都向C授予相同的特权,则A可以撤消他自己的授予,但不能撤消B的授予,因此C实际上仍然有特权。
当对象的非所有者尝试REVOKE对对象的特权时,如果用户对对象没有任何特权,则该命令将彻底失败。 只要有某些特权,该命令就会继续执行,但是它将仅撤销用户具有授予选项的那些特权。 如果未保留任何授予选项,则REVOKE ALL PRIVILEGES形式将发出警告消息, 而如果未保留针对命令中明确指定的任何特权的授予选项,则其他形式将发出警告。 (原则上,这些声明也适用于对象所有者,但是由于 YMatrix 数据库始终将所有者视为拥有所有授予选项的对象,因此永远不会发生这种情况。)
如果超级用户选择发出GRANT或REVOKE命令, 则 YMatrix 数据库将执行该命令,就像它是由受影响对象的所有者发出的一样。 由于所有特权最终都来自对象所有者(可能间接地通过授予选项链), 因此超级用户可以撤消所有特权,但是如上所述,这可能需要使用CASCADE。
REVOKE也可以由不是受影响对象的所有者,但是拥有该对象的角色的成员, 或者是持有对该对象具有WITH GRANT OPTION特权的角色的成员来调用。 在这种情况下,YMatrix 数据库将执行该命令,就像它是由实际拥有该对象或拥有WITH GRANT OPTION特权的用户所包含的角色发出的那样。 例如,如果表t1由角色g1拥有, 而角色u1是它的成员,则u1可以撤销t1上记录为由g1授予的特权。 这包括u1以及角色g1的其他成员所做的授权。
如果执行REVOKE的角色通过多个角色成员路径间接持有特权,则未指定将使用哪个包含角色来执行命令。 在这种情况下,最佳实践是使用SET ROLE来成为要REVOKE的特定角色。 否则,可能会导致撤销您想要的特权以外的特权,或者根本不撤销任何特权。
使用psql的\dp元命令来获取有关表和列的现有特权的信息。 您还可以使用其他\d元命令来显示非表对象的特权。
撤销public对表films的插入特权:
REVOKE INSERT ON films FROM PUBLIC;
从topten视图中的角色sally撤消所有特权。 请注意,这实际上意味着撤销当前角色(如果不是超级用户)授予的所有特权。
REVOKE ALL PRIVILEGES ON topten FROM sally;
从用户joe撤消角色admins的成员资格:
REVOKE admins FROM joe;
GRANT命令的兼容性说明也适用于REVOKE。
根据标准,需要RESTRICT或CASCADE, 但是默认情况下 YMatrix 数据库假定RESTRICT。