撤销PostgreSQL中其他用户授予的权限

时间:2015-05-15 19:13:58

标签: postgresql grant user-roles

在PostgreSQL中,当超级用户授予任何权限时(例如 GRANT SELECT ON TABLE table_name ),只有SU才能撤销它们。

有没有其他超级用户可以撤销上述拨款?

编辑:这是我正在运行的示例查询: ALTER DEFAULT PRIVILEGES IN SCHEMA my_schema REVOKE SELECT ON TABLES FROM public CASCADE; 但是,即使在刷新所有内容之后,当我查看模式时,仍会显示所述默认权限。我已经使用我的超级用户帐户和postgres帐户运行它,但都没有工作。

1 个答案:

答案 0 :(得分:1)

来自documentation

  

如果超级用户选择发出GRANT或REVOKE命令,则执行该命令,就好像它是受影响对象的所有者发出的一样。

因此,任何超级用户都可以撤销权限,即使是其他超级用户授予的权限。

您可以使用命令ALTER DEFAULT PRIVILEGES初始权限(创建对象时分配的权限)设置为PostgreSQL默认权限以外的权限。但是,运行该命令只会影响(来自文档):

  

将应用于将来创建的对象的权限。 (它不会影响分配给已存在对象的权限。)

更改现有对象的权限需要单独的GRANTREVOKE,但您也可以应用以下快捷方式:

{GRANT | REVOKE} [privileges] ON ALL TABLES IN SCHEMA [schema name];

,类似于序列和函数。