2010-01-26 15 views
9

Wpadłem na bardzo irytujący problem dziedziczenia z PostgreSQL. Po prostu nie zachowuje się tak, jak powinien, zgodnie z documentation.Dziedziczenie roli PostgreSQL nie działa?

Chciałbym mieć główną rolę i przyznawać uprawnienia nowo utworzonym użytkownikom. Ci użytkownicy powinni dziedziczyć uprawnienia bez konieczności ręcznego wydawania SET ROLE.

CREATE ROLE testrole NOSUPERUSER INHERIT CREATEDB NOCREATEROLE; 
CREATE ROLE testuser LOGIN NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE; 
GRANT testrole TO testuser; 

Teraz po podłączeniu jako testuser, mam następujące:

postgres=> CREATE DATABASE foobar; 
ERROR: permission denied to create database 
postgres=> SET ROLE testrole; 
SET 
postgres=> CREATE DATABASE foobar; 
CREATE DATABASE 

Zgodnie z docs połączonych powyżej (z powodu opcji dziedziczyć), nie powinno być wymagane SET ROLE.

Czego mi tu brakuje?

Odpowiedz

18

Nieco dalej na tej samej stronie:

„Rola atrybuty LOGIN, SUPERUŻYTKOWNIK, createdb i CREATEROLE można traktować jako specjalne przywileje, ale nigdy nie są dziedziczone jako zwykłych przywilejów dotyczących obiektów bazy danych Czy jesteś. musi faktycznie ustawić ROLĘ do określonej roli posiadającej jeden z tych atrybutów, aby móc korzystać z atrybutu. "

Powiązane problemy