Необходимо для конкретной роли выставить права только на чтение (SELECT) для конкретной схемы в БД. После выполнения команды
GRANT SELECT ON ALL TABLES IN SCHEMA myschema TO myuser;
Всё работает отлично, но только для тех таблиц, которые уже существуют. Для таблиц, которые были созданы после назначения этих прав, доступ отсутствует. Чтобы исправить эту проблему, выполняется изменение настроек по умолчанию:
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT SELECT ON TABLES TO myuser;
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT SELECT ON SEQUENCES TO myuser;
Данные команды не дают никакого результата, созданные в будущем таблицы, всё равно недоступны на чтение. Однако если в правах доступа разрешить не только чтение, а всё (ALL), проблема исчезает.
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT ALL ON TABLES TO myuser;
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT ALL ON SEQUENCES TO myuser;
Как разрешить пользователю только чтение таблиц, которые будут созданы в дальнейшем в рамках данной схемы?