15.7.1.11 Заявление SET ROLE
SET ROLE {
DEFAULT
| NONE
| ALL
| ALL EXCEPT role [, role ] ...
| role [, role ] ...
}
SET ROLE изменяет эффективные привилегии текущего пользователя в текущей сессии, указав, какие из предоставленных ролей активны. Предоставленные роли включают те, которые были явно предоставлены пользователю, и те, которые указаны в значении системной переменной mandatory_roles.
Примеры:
SET ROLE DEFAULT;
SET ROLE 'role1', 'role2';
SET ROLE ALL;
SET ROLE ALL EXCEPT 'role1', 'role2';
Каждое имя роли использует формат, описанный в разделе 8.2.5 «Определение имён ролей». Часть имени роли, относящаяся к хосту, если она опущена, по умолчанию равна '%'.
Привилегии, которые были непосредственно предоставлены пользователю (а не через роли), остаются неизменными при изменении активных ролей.
Заявление допускает следующие спецификаторы ролей:
-
DEFAULT: Активировать роли по умолчанию для учётной записи. Роли по умолчанию — это роли, указанные с помощьюSET DEFAULT ROLE.Когда пользователь подключается к серверу и успешно проходит аутентификацию, сервер определяет, какие роли активировать в качестве ролей по умолчанию. Если системная переменная
activate_all_roles_on_loginвключена, сервер активирует все предоставленные роли. В противном случае сервер неявно выполняетSET ROLE DEFAULT. Сервер активирует только роли по умолчанию, которые могут быть активированы. Сервер записывает предупреждения в свой журнал ошибок для ролей по умолчанию, которые не могут быть активированы, но клиент не получает никаких предупреждений.Если пользователь выполняет
SET ROLE DEFAULTв течение сессии, возникает ошибка, если любая роль по умолчанию не может быть активирована (например, если она не существует или не предоставлена пользователю). В этом случае текущие активные роли не изменяются. NONE: Установить активные роли вNONE(нет активных ролей).ALL: Активировать все роли, предоставленные учётной записи.ALL EXCEPT: Активировать все роли, предоставленные учётной записи, за исключением указанных. Указанные роли могут не существовать или не быть предоставлены учётной записи.role[,role] ...: Активировать указанные роли, которые должны быть предоставлены учётной записи.role[,role] ...
SET DEFAULT ROLE и SET ROLE
DEFAULT — это разные заявления:
SET DEFAULT ROLEопределяет, какие роли учётной записи должны быть активированы по умолчанию в сессиях учётной записи.SET ROLE DEFAULTустанавливает активные роли в текущей сессии на текущие роли по умолчанию для учётной записи.
Примеры использования ролей см. в разделе 8.2.10 «Использование ролей».
© 2025 Oracle
Licensed under the GPLv2 License.