2010-01-26 31 views
9

Tôi gặp phải vấn đề về vai trò rất khó chịu với PostgreSQL. Nó chỉ đơn giản là không hành xử như nó phải theo documentation.Thừa kế vai trò PostgreSQL không hoạt động?

Tôi muốn có vai trò chính và cấp quyền cho người dùng mới được tạo. Những người dùng này sẽ kế thừa các quyền mà không cần phát hành theo cách thủ công SET ROLE.

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

Bây giờ sau khi tôi kết nối như testuser, tôi nhận được như sau:

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

Theo các tài liệu liên kết ở trên (vì sự lựa chọn kế thừa), các SET ROLE không nên được yêu cầu.

Tôi thiếu gì ở đây?

Trả lời

18

Một chút nữa xuống cùng page:

"Vai trò thuộc tính LOGIN, superuser, CREATEDB, và CREATEROLE có thể được coi đặc quyền là đặc biệt, nhưng họ không bao giờ được thừa hưởng như quyền bình thường trên các đối tượng cơ sở dữ liệu là Bạn. phải thực sự SET ROLE thành một vai trò cụ thể có một trong các thuộc tính này để sử dụng thuộc tính. "

Các vấn đề liên quan