Postgres:向各种用户授予对未来表的访问权限
Postgres: Grant access to future tables to various users
关于此主题已有多个讨论帖。但是我无法完成它并不断收到 "permission denied" 错误。我一定是做错了什么。
我的目标:在我的 postgres 数据库上 "mydatabase" 我想要
- 一大群用户属于角色 "group_x"
- 角色 "group_x" 的每个成员都应该有权访问特定架构 "schema_x"
- 在该架构中,所有组成员都应该能够创建新表并相互编辑(未来的)表。
我是如何尝试的(大致):
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
子句中指定创建表的用户
关于此主题已有多个讨论帖。但是我无法完成它并不断收到 "permission denied" 错误。我一定是做错了什么。
我的目标:在我的 postgres 数据库上 "mydatabase" 我想要
- 一大群用户属于角色 "group_x"
- 角色 "group_x" 的每个成员都应该有权访问特定架构 "schema_x"
- 在该架构中,所有组成员都应该能够创建新表并相互编辑(未来的)表。
我是如何尝试的(大致):
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
子句中指定创建表的用户