2010-01-08 8 views
7

Est-il possible avec Postgresql de créer une base de données avec 2 utilisateurs agissant comme des propriétaires de la base de données?Deux propriétaires de la même base de données PostgreSQL

Je peux créer un rôle de groupe et ajouter les deux utilisateurs à ce groupe, puis rendre le groupe propriétaire de la base de données, mais les deux utilisateurs doivent définir manuellement leur rôle sur chaque connexion. ont créé accessible à l'autre utilisateur. Est-il possible de faire en sorte que le groupe soit le rôle par défaut pour un utilisateur chaque fois qu'il se connecte ou de toute autre manière pour obtenir la même chose?

Répondre

10

Non, chaque base de données ne peut avoir qu'un seul propriétaire. Comme indiqué précédemment, vous pouvez avoir plusieurs super-utilisateurs, ou vous pouvez accorder des autorisations spécifiques aux groupes qui sont ensuite hérités.

Vous voudrez peut-être regarder http://blog.hagander.net/archives/70-Faking-the-dbo-role.html, pour un moyen de simuler quelque chose de similaire à ce que vous demandez. Ce n'est pas parfait, mais ça pourrait être assez bon pour vous. Il devrait être capable de résoudre au moins le problème de la propriété d'un objet.

+0

Oui, cela semble faire ce que je veux. Toutes les implications de sécurité de travailler de cette façon que vous pouvez penser? –

+0

Non, ça devrait aller. Je suppose que si vous les faites admins, on leur fait confiance pour ne pas casser intentionnellement les choses. Comme, l'utilisateur peut toujours revenir à son rôle original s'il a une intention malveillante. –

4

Ah, trouvé: PostgreSQL Docs: Chapter 20. Database Roles and Privileges

« rôles membres qui ont l'attribut HERITER ont automatiquement l'utilisation des privilèges des rôles dont ils sont membres. »

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

« Immédiatement après la connexion comme joe rôle, une session de base de données pourra utiliser les privilèges accordés directement à Joe ainsi que tous les privilèges accordés à l'administrateur, parce que Joe « hérite » des privilèges d'administrateur. »

+0

Vrai, mais les tables créées par joe appartiennent à joe et non à admin, ce qui signifie que les autres utilisateurs du groupe n'y ont pas accès. –

+0

Mais vous pouvez avoir 'admin' avec des droits pour tout faire sur toutes les tables, ce qui inclurait les tables créées par d'autres utilisateurs du groupe. – Timothy

+0

Mais vous devez toujours définir manuellement le rôle d'administrateur pour chaque connexion que vous faites avec l'utilisateur, n'est-ce pas? –

Questions connexes