Postgres:向各种用户授予对未来表的访问权限

Postgres: Grant access to future tables to various users

关于此主题已有多个讨论帖。但是我无法完成它并不断收到 "permission denied" 错误。我一定是做错了什么。

我的目标:在我的 postgres 数据库上 "mydatabase" 我想要

  1. 一大群用户属于角色 "group_x"
  2. 角色 "group_x" 的每个成员都应该有权访问特定架构 "schema_x"
  3. 在该架构中,所有组成员都应该能够创建新表并相互编辑(未来的)表。

我是如何尝试的(大致):

psql -h /var/run/postgresql -p5433 -U postgres

create role group_x;

create role user_a LOGIN INHERIT PASSWORD <password>;
create role user_b LOGIN INHERIT PASSWORD <password>;

grant group_x to user_a;
grant group_x to user_b;

\connect mydatabase;

grant all on schema schema_x to group_x;
grant all on all tables in schema schema_x to group_x;
grant all on all sequences in schema schema_x to group_x;
grant all on all functions in schema schema_x to group_x;

set role group_x;

alter default privileges for role group_x in schema schema_x
    grant all on tables to group_x;
alter default privileges for role group_x in schema schema_x
    grant all on sequences to group_x;
alter default privileges for role group_x in schema schema_x
    grant all on functions to group_x;

感谢您指出我的错误!

如果您更改默认权限<strong>FOR ROLE group_x</strong>,这意味着权限仅授予未来的对象由用户创建 group_x.

所以需要在FOR ROLE子句中指定创建表的用户