Postgres: предоставить доступ к будущим таблицам различным пользователям - PullRequest
0 голосов
/ 04 февраля 2020

В этой теме уже несколько тем c. Тем не менее, я не могу сделать это и продолжаю получать ошибки «Отказано в разрешении». Я, должно быть, делаю что-то очень неправильное.

Моя цель: в моей 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;

Спасибо за указание на мои ошибки!

1 Ответ

0 голосов
/ 04 февраля 2020

Если вы ALTER DEFAULT PRIVILEGES <strong>FOR ROLE group_x</strong>, это означает, что привилегии предоставляются только для будущих объектов , созданных пользователем group_x.

Поэтому необходимо указать пользователя, который создает таблицы в FOR ROLE предложение.

...