0

有没有办法从服务器上定义为超级用户的角色撤销数据库的连接(或最好是所有)权限?在开发服务器上,我们有几个数据库——其中一个是共享的,但其余的应该只由一个开发人员拥有,其他人没有连接权限。目前,所有开发人员都是具有登录选项的超级用户。

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 或放弃其他开发人员的超级用户状态的情况下做到这一点?

4

1 回答 1

1

不,您需要从这些开发人员那里删除超级用户身份。

手册中的相关引用:

这些子句确定新角色是否是“超级用户”,他可以覆盖数据库内的所有访问限制

于 2013-01-31T16:12:57.133 回答