我有一个名为somedb
user的数据库someuser
。我已经撤销了该数据库的所有公共权限。
我想向 授予连接权限anotheruser
,但我不希望anotheruser
能够someuser
在其公共架构中查询任何非系统表(即由 创建的任何表)。那可能吗?还是我需要将公共架构中的所有表移动到不同的架构?
当我以用户身份GRANT CONNECT ON DATABASE somedb TO anotheruser;
连接到数据库时,我可以查询.somedb
anotheruser
somedb
我尝试了以下方法,但没有奏效:
REVOKE ALL ON somedb.public.sometable FROM anotheruser;
ALTER DEFAULT PRIVILEGES FOR USER anotheruser IN SCHEMA public
REVOKE ALL ON TABLES FROM anotheruser;
ALTER DEFAULT PRIVILEGES FOR USER anotheruser IN SCHEMA public
REVOKE ALL ON SEQUENCES FROM anotheruser;
知道在同一服务器上的不同anotheruser
数据库中具有 SELECT 和其他权限可能很有用。
好吧,我想我明白了。我必须将公共模式的所有者更改为数据库的所有者,然后从公共撤销公共模式的所有权限,如下所示:
我发现这个网页很有帮助。