PostgreSQL - 更改默认特权....SELECT 表...在所有模式中
PostgreSQL - ALTER DEFAULT PRIVILEDGES....SELECT ON TABLES... in all schemas
是否可以更改 PostgreSQL 角色的默认权限,这样该角色对任何模式(现有或将来创建)中的任何 table 具有 SELECT
我有 3 个角色(app_r
是 app_rw
的成员,app_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
并为 每个 模式重复? (呃)
ALTER DEFAULT PRIVILEGES FOR ROLE app_r IN SCHEMA some_schema GRANT SELECT ON TABLES TO app_r;
P.S。
我确实尝试 运行 ALTER DEFAULT before(和 after 也只是为了测试)创建模式和 tables。 ..
P.P.S
我的角色设置受到 this answer and I saw in 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;
Is it possible to alter default priviledges on PostgreSQL role, such
that role has SELECT on any table in any schema (existing or created
in future)
从 9.6 版开始,没有。
是否可以更改 PostgreSQL 角色的默认权限,这样该角色对任何模式(现有或将来创建)中的任何 table 具有 SELECT
我有 3 个角色(app_r
是 app_rw
的成员,app_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
并为 每个 模式重复? (呃)
ALTER DEFAULT PRIVILEGES FOR ROLE app_r IN SCHEMA some_schema GRANT SELECT ON TABLES TO app_r;
P.S。 我确实尝试 运行 ALTER DEFAULT before(和 after 也只是为了测试)创建模式和 tables。 ..
P.P.S 我的角色设置受到 this answer and I saw in 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;
Is it possible to alter default priviledges on PostgreSQL role, such that role has SELECT on any table in any schema (existing or created in future)
从 9.6 版开始,没有。