有没有办法从服务器上定义为超级用户的角色撤销数据库的连接(或最好是所有)权限?在开发服务器上,我们有几个数据库 - 其中一个是共享的,但其余数据库只能由一个没有连接权限的开发人员拥有。目前,所有开发人员都是具有登录选项的超级用户。
CREATE ROLE dev_name LOGIN
ENCRYPTED PASSWORD '...'
SUPERUSER INHERIT CREATEDB CREATEROLE REPLICATION;
我试图在很多方面做到这一点:
REVOKE CONNECT ON DATABASE test_db FROM dev_name;
revoke select on all tables in schema public from dev_name;
然后我检查:
SELECT * FROM has_database_privilege('dev_name', 'test_db', 'connect');
仍然是真的。
我尝试过使用变通方法并将连接限制更改为其他值,但即使我第一次登录,超级用户仍然可以连接:
CONNECTION LIMIT = 1;
那么,也许是否有机会在不弄乱pg_hba或为其他开发人员删除超级用户状态的情况下这样做?
答案 0 :(得分:1)
不,您需要从这些开发人员中删除超级用户状态。
手册中的相关引言:
作为超级用户意味着您不受访问控制
这些条款确定新角色是否是“超级用户”,谁可以 覆盖数据库中的所有访问限制