2010-01-08 19 views
7

Czy jest możliwe, aby Postgresql utworzył bazę danych, która ma 2 użytkowników, którzy zachowują się jak właściciele bazy?Dwóch właścicieli tej samej bazy danych PostgreSQL

Mogę utworzyć rolę grupy i dodać obu użytkowników do tej grupy, a następnie uczynić grupę właścicielem bazy danych, ale wymaga to od obu użytkowników ręcznego ustawienia ich roli na każdym połączeniu, aby utworzyć dowolne tabele. utworzyli dostęp do drugiego użytkownika. Czy istnieje sposób, aby grupa stała się domyślną rolą użytkownika za każdym razem, gdy się loguje lub w jakikolwiek inny sposób, aby osiągnąć to samo?

Odpowiedz

10

Nie, każda baza danych może mieć tylko jednego właściciela. Jak już wcześniej wspomniano, możesz mieć więcej niż jednego administratora, lub możesz przyznać uprawnienia specjalnie do grupowania ról, które są dziedziczone.

Być może zechcesz spojrzeć na http://blog.hagander.net/archives/70-Faking-the-dbo-role.html, aby spróbować sfałszować coś podobnego do tego, o co prosisz. To nie jest doskonałe, ale może być wystarczająco dobre dla ciebie. Powinien przynajmniej być w stanie rozwiązać problem własności obiektu.

+0

Tak, wydaje się, że robię to, co chcę. Jakiekolwiek implikacje dotyczące bezpieczeństwa pracy w taki sposób, jaki możesz wymyślić? –

+0

Nie, to powinno być w porządku. Zakładam, że jeśli zrobisz z nich adminów, to im zaufa, że ​​nie będą celowo łamać rzeczy. Podobnie jak użytkownik może nadal przywracać swoją rolę do oryginalnej, jeśli ma złośliwe zamiary. –

4

Ach, znalazł go „role członkowskie, które mają atrybut Dziedziczenia automatycznie mają zastosowanie przywilejów ról są członkami” PostgreSQL Docs: Chapter 20. Database Roles and Privileges

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

„Natychmiast po podłączeniu jako roli Joe, sesja bazy danych będzie mieć zastosowanie do przywilejów przyznanych bezpośrednio Joe powiększona o nadanych do administratora, ponieważ Joe«dziedziczy»przywileje admin”.

+0

To prawda, ale tabele utworzone przez joe są własnością joe, a nie administratora, co oznacza, że ​​inni użytkownicy w grupie nie mają do nich dostępu. –

+0

Ale możesz mieć "admin" z uprawnieniami do robienia wszystkiego na wszystkich stołach, co zawiera tabele utworzone przez innych użytkowników w grupie. – Timothy

+0

Ale nadal musisz ręcznie ustawić rolę administratora dla każdego połączenia, które nawiążesz z użytkownikiem, prawda? –

Powiązane problemy