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

В PostgreSQL можно задать дефолтные права на все таблицы в схеме, используя глобальные именованные атрибуты, известные как "ролевые шаблоны" (role templates). Ролевые шаблоны позволяют определить набор разрешений, которые будут автоматически наследоваться всеми пользователями, которым назначен этот шаблон. Для задания дефолтных прав на все таблицы в схеме вам потребуется выполнить следующие шаги:

Шаг 1: Создание ролевого шаблона
Создайте нового пользователя или роль, которому вы хотите назначить дефолтные права на все таблицы в схеме. Например, вы можете создать пользователя "default_user":

CREATE ROLE default_user LOGIN PASSWORD 'your_password';

Шаг 2: Назначение прав доступа
Назначьте необходимые права доступа ролевому шаблону, используя операторы GRANT. Например, вы можете назначить права на чтение и запись для всех таблиц в схеме "public":

GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO default_user;

Шаг 3: Назначение шаблона роли пользователям
Назначьте созданный ролевой шаблон пользователям, которым вы хотите наследовать дефолтные права. Измените параметр "rolename" на имя роли пользователя, которому нужно назначить шаблон. Например, вы можете назначить шаблон роли пользователя "user1":

ALTER ROLE user1 IN DATABASE your_database SET ROLE default_user;

Теперь все таблицы, созданные пользователем "user1" в схеме "public", будут наследовать права доступа, определенные в ролевом шаблоне "default_user".

Обратите внимание, что эти дефолтные права наследуются только для новых таблиц, созданных после назначения ролевого шаблона. Существующие таблицы не будут автоматически обновлены, чтобы отразить новые права доступа. Если вы хотите применить дефолтные права на все существующие таблицы, вам придется явно назначить права доступа для каждой таблицы отдельно.