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