2010-01-08 2 views
7

Возможно ли, что Postgresql создаст базу данных, в которой есть 2 пользователя, которые действуют как владельцы базы данных?Два владельца одной и той же базы данных PostgreSQL

Я могу создать групповую роль и добавить обе пользователей в эту группу, а затем сделать группу владельцем базы данных, но для этого требуется, чтобы оба пользователя вручную устанавливали свою роль на каждом соединении, чтобы создавать любые таблицы, которые они создали для другого пользователя. Есть ли способ сделать группу ролью по умолчанию для пользователя при каждом входе в систему или каким-либо другим способом достичь того же?

ответ

10

Нет, каждая база данных может иметь только одного владельца. Как уже указывалось ранее, у вас может быть более одного суперпользователя, или вы можете предоставить разрешения специально для группирования ролей, которые затем унаследованы.

Возможно, вы захотите посмотреть на http://blog.hagander.net/archives/70-Faking-the-dbo-role.html, чтобы подделать что-то похожее на то, о чем вы просите. Это не идеально, но это может быть достаточно для вас. По крайней мере, он должен решить проблему владения объектами.

+0

Да, это похоже на то, что я хочу. Любые последствия для безопасности для работы таким образом, о которых вы можете думать? –

+0

Нет, это должно быть хорошо. Я предполагаю, что если вы сделаете их администраторами, им доверяют не намеренно нарушать вещи. Например, пользователь может вернуть свою роль оригинальному, если у него есть злонамеренные намерения. –

4

Ах, нашел: PostgreSQL Docs: Chapter 20. Database Roles and Privileges

«ролей членов, которые имеют атрибут INHERIT автоматически использовать привилегии роли, которую они являются членами.»

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

«Сразу после подключения в роли Джо, сеанс базы данных будет использовать привилегии, предоставляемые непосредственно джо плюс каких-либо привилегий, предоставленных администратором, потому что Джо„наследует“привилегии администратора.»

+0

Правда, но таблицы, созданные joe, принадлежат joe, а не admin, что означает, что у любых других пользователей в группе нет доступа к ним. –

+0

Но у вас может быть «админ» с правами делать все на всех таблицах, включая таблицы, созданные другими пользователями в группе. – Timothy

+0

Но вам все равно придется вручную установить роль администратора для каждого подключения, которое вы делаете с пользователем, не так ли? –

Смежные вопросы