无法创建读写 Postgresql 用户

Kri*_*per 5 schema postgresql permissions users

我正在尝试在 Postgres 数据库中创建两个用户 - 一个具有对两个模式中所有表的读写访问权限,另一个具有对相同模式的读写创建(即,能够进行 DDL 更改)。

我目前有这些陈述。

CREATE SCHEMA
    schema_a;

CREATE SCHEMA
    schema_b;

CREATE ROLE read;
CREATE ROLE read_write;
CREATE ROLE read_write_create;

GRANT USAGE ON SCHEMA schema_a, schema_b TO read;
GRANT SELECT ON ALL TABLES IN SCHEMA schema_a, schema_b TO read;

GRANT INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA schema_a, schema_b TO read_write;
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA schema_a, schema_b TO read_write;

GRANT ALL ON SCHEMA schema_a, schema_b TO read_write_create;

GRANT read to read_write;
GRANT read_write to read_write_create;

ALTER DEFAULT PRIVILEGES IN SCHEMA schema_a, schema_b GRANT SELECT ON TABLES TO read;
ALTER DEFAULT PRIVILEGES IN SCHEMA schema_a, schema_b GRANT SELECT ON SEQUENCES TO read;
ALTER DEFAULT PRIVILEGES IN SCHEMA schema_a, schema_b GRANT INSERT, UPDATE, DELETE ON TABLES TO read_write;
ALTER DEFAULT PRIVILEGES IN SCHEMA schema_a, schema_b GRANT SELECT, UPDATE ON SEQUENCES TO read_write;

CREATE USER
    read_write_user
WITH PASSWORD
    'a_password';

GRANT read_write TO read_write_user;

CREATE USER
    read_write_create_user
WITH PASSWORD
    'another_password';

GRANT read_write_create TO read_write_create_user;
Run Code Online (Sandbox Code Playgroud)

运行这些后,read_write_create_user可以创建表、读取和写入所有表。但read_write_user不能读取或写入任何由read_write_create_user.

我究竟做错了什么?

dez*_*zso 1

这是因为任一模式中的表都是由不同的角色(我假设read_write_create_user)创建的,而不是为其定义默认权限的角色(即您或运行上述一组语句的角色)。

您会在我的旧答案中找到更多解释。