Быстрый старт
Развертывание
Моделирование данных
Подключение
Запись данных
Миграция
Запросы
Операции и обслуживание
Типовое обслуживание
Секционирование
Резервное копирование и восстановление
Масштабирование
Мониторинг
Настройка производительности
Устранение неполадок
Справочник
Руководство по инструментам
Типы данных
Хранилище данных
Выполняющая система
Потоковая передача
Восстановление после сбоев
Конфигурация
Индексы
Расширения
Справочник по SQL
Часто задаваемые вопросы
Изменяет права доступа по умолчанию.
ALTER DEFAULT PRIVILEGES
[ FOR { ROLE | USER } <target_role> [, ...] ]
[ IN SCHEMA <schema_name> [, ...] ]
<abbreviated_grant_or_revoke>
where <abbreviated_grant_or_revoke> is one of:
GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
[, ...] | ALL [ PRIVILEGES ] }
ON TABLES
TO { [ GROUP ] <role_name> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
GRANT { { USAGE | SELECT | UPDATE }
[, ...] | ALL [ PRIVILEGES ] }
ON SEQUENCES
TO { [ GROUP ] <role_name> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
GRANT { EXECUTE | ALL [ PRIVILEGES ] }
ON { FUNCTIONS | ROUTINES }
TO { [ GROUP ] <role_name> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
GRANT { USAGE | ALL [ PRIVILEGES ] }
ON TYPES
TO { [ GROUP ] <role_name> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
GRANT { USAGE | CREATE | ALL [ PRIVILEGES ] }
ON SCHEMAS
TO { [ GROUP ] <role_name> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
REVOKE [ GRANT OPTION FOR ]
{ { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
[, ...] | ALL [ PRIVILEGES ] }
ON TABLES
FROM { [ GROUP ] <role_name> | PUBLIC } [, ...]
[ CASCADE | RESTRICT ]
REVOKE [ GRANT OPTION FOR ]
{ { USAGE | SELECT | UPDATE }
[, ...] | ALL [ PRIVILEGES ] }
ON SEQUENCES
FROM { [ GROUP ] <role_name> | PUBLIC } [, ...]
[ CASCADE | RESTRICT ]
REVOKE [ GRANT OPTION FOR ]
{ EXECUTE | ALL [ PRIVILEGES ] }
ON { FUNCTIONS | ROUTINES }
FROM { [ GROUP ] <role_name> | PUBLIC } [, ...]
[ CASCADE | RESTRICT ]
REVOKE [ GRANT OPTION FOR ]
{ USAGE | ALL [ PRIVILEGES ] }
ON TYPES
FROM { [ GROUP ] <role_name> | PUBLIC } [, ...]
[ CASCADE | RESTRICT ]
REVOKE [ GRANT OPTION FOR ]
{ USAGE | CREATE | ALL [ PRIVILEGES ] }
ON SCHEMAS
FROM { [ GROUP ] <role_name> | PUBLIC } [, ...]
[ CASCADE | RESTRICT ]
ALTER DEFAULT PRIVILEGES позволяет задать привилегии, которые будут применяться к объектам, создаваемым в будущем. (Команда не влияет на привилегии уже существующих объектов.) В настоящее время можно изменять привилегии только для схем, таблиц (включая представления и внешние таблицы), последовательностей, функций и типов (включая домены). В контексте этой команды под функциями понимаются агрегатные функции и процедуры. Слова FUNCTIONS и ROUTINES являются эквивалентными в данной команде. (В дальнейшем рекомендуется использовать термин ROUTINES как стандартный для обозначения функций и процедур вместе взятых. В более ранних версиях Database разрешалось использовать только слово FUNCTIONS. Отдельно установить права по умолчанию для функций и процедур невозможно.)
Вы можете изменять права по умолчанию только для объектов, которые будут созданы вами или ролями, членом которых вы являетесь. Привилегии могут быть установлены глобально (то есть для всех объектов, создаваемых в текущей базе данных), либо только для объектов, создаваемых в указанных схемах.
Как описано в разделе [GRANT](), права по умолчанию для любого типа объекта обычно предоставляют все передаваемые разрешения владельцу объекта и могут дополнительно предоставлять некоторые привилегии PUBLIC. Однако такое поведение можно изменить, изменив глобальные права по умолчанию с помощью команды ALTER DEFAULT PRIVILEGES.
Права по умолчанию, заданные для конкретной схемы, добавляются к тем правам, которые установлены глобально для данного типа объекта. Это означает, что вы не можете отозвать права на уровне схемы, если они предоставлены глобально (либо по умолчанию, либо согласно предыдущей команде ALTER DEFAULT PRIVILEGES, которая не указывала схему). Отзыв прав на уровне схемы полезен только для отмены эффекта предыдущей команды GRANT, также заданной на уровне схемы.
Для получения информации о текущих назначениях прав по умолчанию используйте команду \ddp в psql. Значения привилегий аналогичны тем, что объяснены для \dp в разделе GRANT.
Если вы хотите удалить роль, для которой были изменены права по умолчанию, необходимо сначала отменить изменения в её правах по умолчанию или использовать команду DROP OWNED BY, чтобы удалить запись о правах по умолчанию для этой роли.
Предоставить право SELECT всем пользователям на все таблицы (и представления), которые вы будете создавать в дальнейшем в схеме myschema, а также разрешить роли webuser выполнять INSERT:
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT SELECT ON TABLES TO PUBLIC;
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT INSERT ON TABLES TO webuser;
Отменить вышеуказанное, чтобы вновь создаваемые таблицы не имели дополнительных разрешений сверх обычных:
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE SELECT ON TABLES FROM PUBLIC;
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE INSERT ON TABLES FROM webuser;
Удалить разрешение EXECUTE для PUBLIC, которое обычно предоставляется на функции, для всех функций, которые в дальнейшем будет создавать роль admin:
ALTER DEFAULT PRIVILEGES FOR ROLE admin REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC;
Однако обратите внимание, что достичь такого эффекта с помощью команды, ограниченной одной схемой, невозможно. Следующая команда не окажет никакого действия, если только она не отменяет соответствующую команду GRANT:
ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC;
Это происходит потому, что права по умолчанию на уровне схемы могут только добавлять привилегии к глобальным настройкам, но не могут отзывать те, которые предоставлены глобально.
В стандарте SQL отсутствует оператор ALTER DEFAULT PRIVILEGES.