@igortru

Как задать дефолтные права на все таблицы в схеме в postgres?

Привет.
Есть схема, условно назовем test.
Для схемы сделана роль доступа test_all, при членстве в которой пользователь может создавать в схеме таблицы.

GRANT ALL ON SCHEMA test TO test_all;
ALTER DEFAULT PRIVILEGES FOR ROLE user_main IN SCHEMA test
GRANT ALL ON TABLES TO test_all;

Пользователи user1 и user2 добавлены test_all

Проблема - пользователь user1 создает объект в схеме test, является его владельцем, но пользователь user2 доступа до объекта созданным user1 не имеет.
Надо чтобы пользователь user2 имел доступ на объекты созданные user1 в схеме test, на все обьекты.

db=# set role user2;
SET
db=> select * from test.app limit 10;
ERROR: permission denied for table application_import
db=>
  • Вопрос задан
  • 393 просмотра
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Необходим свой комплект ALTER DEFAULT PRIVILEGES для каждого пользователя, который будет создавать объекты в базе.
Это раз.

Два - идея вообще стабильно работать будет только для CRUD. Всякие alter table требуют быть владельцем таблицы либо быть в группе владельца (не в общей с владельцем группе, а именно чтобы владелец таблицы был в группе пользователя).

Подумайте над организацией процессов. Наименее проблемно будет, если у вас будет только один пользователь, который создаёт или меняет схему данных, а ro (select только) и rw (select/insert/update/delete) пользователей может быть много. Всё остальное к приключениям.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы