同一PostgreSQL数据库的两个所有者

时间:2010-01-08 09:43:27

标签: postgresql roles usergroups

Postgresql是否可以创建一个有2个用户的数据库,这些用户就像数据库的所有者一样?

我可以创建一个组角色并将两个用户添加到该组,然后使该组成为数据库的所有者,但这要求两个用户必须在每个连接上手动设置其角色以生成他们拥有的任何表创建为其他用户可访问。是否有任何方法可以使组成为用户每次登录时的默认角色或以其他任何方式实现相同的目的?

2 个答案:

答案 0 :(得分:12)

不,每个数据库只能有一个所有者。如前所述,您可以拥有多个超级用户,或者您可以专门授予对随后继承的组角色的权限。

您可能需要查看http://blog.hagander.net/archives/70-Faking-the-dbo-role.html,以便找出类似于您所要求的内容。它并不完美,但对你来说可能已经足够了。它至少应该能够解决对象所有权问题。

答案 1 :(得分:6)

啊,发现它:PostgreSQL Docs: Chapter 20. Database Roles and Privileges

  

“具有INHERIT属性的成员角色自动使用其所属角色的权限。”

CREATE ROLE joe LOGIN INHERIT;
CREATE ROLE admin NOINHERIT;
GRANT admin TO joe;
  

“作为角色joe连接后,数据库会话将立即使用直接授予joe的权限以及授予admin的任何权限,因为joe”继承“admin的权限。”