Как обсуждалось в вопросе на GRANT SELECT для всех таблиц в postgresql, начиная с PG 9.0 вы можете массово предоставлять привилегии для всех существующий table пользователю u, используя такую команду, как:
GRANT ALL ON ALL TABLES IN SCHEMA public TO u;
Зайдя в систему как u, вы можете сделать это с уже существующей таблицей a:
SELECT * FROM a;
Но если вы сейчас создадите таблицу b и выполните:
SELECT * FROM b;
Ты получаешь:
ERROR: permission denied for relation b
SQL state: 42501
Это можно исправить, повторно выполнив
GRANT ALL ON ALL TABLES IN SCHEMA public TO u;
Но это проблема, когда нужно помнить об этом каждый раз, когда вы создаете таблицу.
Есть ли способ заставить PostgreSQL автоматически применять эти глобальные гранты к вновь созданным таблицам?
~ Заранее спасибо ~ Кен
Возможное решение - изменить права по умолчанию для u
пользователь:
Например:
alter default privileges in schema public grant all on tables to u;
alter default privileges in schema public grant all on sequences to u;
Описание
ALTER DEFAULT PRIVILEGES
позволяет вам установить привилегии, которые будут применяться к объектам, созданным в будущем. (Это не влияет на привилегии, назначенные уже существующим объектам.) В настоящее время можно изменять только привилегии для таблиц (включая представления), последовательностей и функций.Вы можете изменить права по умолчанию только для объектов, которые будут созданы вами или ролями, членом которых вы являетесь. Привилегии могут быть установлены глобально (т.е.для всех объектов, созданных в текущей базе данных), или только для объектов, созданных в указанных схемах. Привилегии по умолчанию, указанные для каждой схемы, добавляются к глобальным привилегиям по умолчанию для конкретного типа объекта.
Как объяснено в
GRANT
, привилегии по умолчанию для любого типа объекта обычно предоставляют все предоставляемые разрешения владельцу объекта и могут предоставлять некоторые привилегии дляPUBLIC
также. Однако это поведение можно изменить, изменив глобальные права по умолчанию с помощьюALTER DEFAULT PRIVILEGES
.
видеть: ИЗМЕНИТЬ ПРИВИЛЕГИИ ПО УМОЛЧАНИЮ