我试图撤销数据库上用户的所有权限,但我无法让它工作。
我在做:
REVOKE ALL PRIVILEGES ON DATABASE db1 FROM user1;
答案 0 :(得分:2)
REVOKE ALL
引用一个对象的所有权限,而不是任何相关对象。在这种情况下,您说的是“作为单个对象应用于数据库的所有权限”。 在数据库级存在的唯一权限是CONNECT
,默认情况下,授予特殊角色Public
,其中所有其他角色都是其成员。< / p>
因此,要拒绝以这种方式访问用户,您必须从Public撤消CONNECT权限,然后将其明确授予您 要授予其访问权限的角色。
还有一些其他选择可以想到:
public
架构已授予public角色,因此您需要先使用CONNECT撤消REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA foo FROM somebody
。您还应该使用ALTER DEFAULT PRIVILEGES
来确保您从现在开始创建的对象无法访问。