PostgreSQL - ALTER DEFAULT PRIVILEDGES ....选择表格...在所有模式中

时间:2017-06-29 21:29:47

标签: postgresql permissions grant

是否可以更改PostgreSQL角色的默认权限,以便角色在任何模式(现有或将来创建)的任何表上都具有SELECT

我有3个角色(app_rapp_rw的成员,是app_rwc的成员) 我正在尝试这个:

ALTER DEFAULT PRIVILEGES FOR ROLE app_rwc GRANT USAGE ON SCHEMAS TO app_r;
ALTER DEFAULT PRIVILEGES FOR ROLE app_rwc GRANT SELECT ON TABLES TO app_r; 

但它不起作用。

SELECT has_table_privilege('app_r', 'some_schema.some_table', 'SELECT')
-- false

有没有办法在PG中执行此操作,还是必须使用IN SCHEMA并重复每个架构? (ughhh)

ALTER DEFAULT PRIVILEGES FOR ROLE app_r IN SCHEMA some_schema GRANT SELECT ON TABLES TO app_r;

P.S。 我确实尝试在之前运行ALTER DEFAULT (并且之后,只是为了测试)创建模式和表格......

P.P.S 我的角色设置受到this answer的启发,我在this answer中看到,没有必要明确指定模式

更新#1 - 以下是我正在使用的确切角色设置:

CREATE ROLE app_rwc INHERIT CREATEDB CREATEROLE;
CREATE ROLE app_rw INHERIT;
CREATE ROLE app_r  INHERIT;

GRANT app_r TO app_rw;
GRANT app_rw TO app_rwc;

-- these must be performed *before* any objects are created
ALTER DEFAULT PRIVILEGES FOR ROLE app_rwc GRANT USAGE ON SCHEMAS TO app_r;
ALTER DEFAULT PRIVILEGES FOR ROLE app_rwc GRANT SELECT ON TABLES TO app_r; 
ALTER DEFAULT PRIVILEGES FOR ROLE app_rwc GRANT INSERT, UPDATE, DELETE ON TABLES TO app_rw;
ALTER DEFAULT PRIVILEGES FOR ROLE app_rwc REVOKE TRUNCATE ON TABLES TO app_rw;
ALTER DEFAULT PRIVILEGES FOR ROLE app_rwc GRANT SELECT, UPDATE ON SEQUENCES TO app_rw;

1 个答案:

答案 0 :(得分:1)

  

是否可以更改PostgreSQL角色的默认权限   该角色在任何模式(现有或已创建)的任何表上都具有SELECT   将来)

从版本9.6起,没有。