2010-01-08 30 views
7

¿Es posible con Postgresql crear una base de datos que tenga 2 usuarios que actúen como propietarios de la base de datos?Dos propietarios de la misma base de datos PostgreSQL

Puedo crear una función de grupo y agregar ambos usuarios a ese grupo, y luego hacer que el grupo sea el propietario de la base de datos, pero esto requiere que ambos usuarios tengan que configurar manualmente su función en cada conexión para crear las tablas que ha creado accesible para el otro usuario. ¿Hay alguna forma de hacer que el grupo sea el rol predeterminado de un usuario cada vez que inicie sesión o de otra forma para lograr lo mismo?

Respuesta

10

No, cada base de datos solo puede tener un propietario. Como se indicó anteriormente, puede tener más de un superusuario, o puede otorgar permisos específicamente para roles de grupo que luego se heredan.

Es posible que desee mirar http://blog.hagander.net/archives/70-Faking-the-dbo-role.html, para una manera de falsificar algo similar a lo que está pidiendo. No es perfecto, pero podría ser lo suficientemente bueno para ti. Debería ser capaz de resolver el problema de propiedad de objetos al menos.

+0

Sí, parece hacer lo que quiero. ¿Tiene alguna implicancia de seguridad al trabajar de esta manera que se le ocurra? –

+0

No, eso debería estar bien. Supongo que si los haces administradores, se confía en que no rompan intencionalmente las cosas. Al igual, el usuario aún puede revertir su rol al original si tiene una intención maliciosa. –

4

Ah, se encontró que: "roles de los miembros que tienen el atributo INHERIT tiene automáticamente el uso de los privilegios de los roles que son miembros de" PostgreSQL Docs: Chapter 20. Database Roles and Privileges

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

"Inmediatamente después de conectar como el papel de Joe, una sesión de base de datos tendrá el uso de los privilegios concedidos directamente a Joe más los privilegios concedidos a admin, porque Joe 'hereda' privilegios de administrador."

+0

Es cierto, pero las tablas creadas por joe son propiedad de Joe y no de administrador, lo que significa que cualquier otro usuario del grupo no tiene acceso a ellas. –

+0

Pero puede tener 'admin' con derechos para hacer todo en todas las tablas, lo que incluiría tablas creadas por otros usuarios en el grupo. – Timothy

+0

Pero aún debe configurar manualmente la función de administrador para cada conexión que realice con el usuario, ¿no es así? –

Cuestiones relacionadas