有没有办法从服务器上定义为超级用户的角色撤销数据库的连接(或最好是所有)权限?在开发服务器上,我们有几个数据库——其中一个是共享的,但其余的应该只由一个开发人员拥有,其他人没有连接权限。目前,所有开发人员都是具有登录选项的超级用户。
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');
仍然返回 true。
我尝试了解决方法并将连接限制更改为另一个值,但即使我第一次登录超级用户仍然可以连接:
CONNECTION LIMIT = 1;
那么,也许有机会在不弄乱 pg_hba 或放弃其他开发人员的超级用户状态的情况下做到这一点?