在PostgreSQL中,当超级用户授予任何权限时(例如 GRANT SELECT ON TABLE table_name ),只有SU才能撤销它们。
有没有其他超级用户可以撤销上述拨款?
编辑:这是我正在运行的示例查询:
ALTER DEFAULT PRIVILEGES IN SCHEMA my_schema REVOKE SELECT ON TABLES FROM public CASCADE;
但是,即使在刷新所有内容之后,当我查看模式时,仍会显示所述默认权限。我已经使用我的超级用户帐户和postgres帐户运行它,但都没有工作。
答案 0 :(得分:1)
如果超级用户选择发出GRANT或REVOKE命令,则执行该命令,就好像它是受影响对象的所有者发出的一样。
因此,任何超级用户都可以撤销权限,即使是其他超级用户授予的权限。
您可以使用命令ALTER DEFAULT PRIVILEGES
将初始权限(创建对象时分配的权限)设置为PostgreSQL默认权限以外的权限。但是,运行该命令只会影响(来自文档):
将应用于将来创建的对象的权限。 (它不会影响分配给已存在对象的权限。)
更改现有对象的权限需要单独的GRANT
和REVOKE
,但您也可以应用以下快捷方式:
{GRANT | REVOKE} [privileges] ON ALL TABLES IN SCHEMA [schema name];
,类似于序列和函数。