Spec-Zone.ru › MySQL 8.4

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.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/set-role.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API