Spec-Zone.ru › MySQL 9.2

8.2.5 Указание имён ролей

Имена ролей MySQL относятся к ролям, которые являются именованными наборами привилегий. Примеры использования ролей см. в разделе 8.2.10, «Использование ролей».

Имена ролей имеют синтаксис и семантику, аналогичные именам учётных записей; см. раздел 8.2.4, «Указание имён учётных записей». Хранимые в таблицах предоставления прав, они обладают теми же свойствами, что и имена учётных записей, описанные в Свойствах столбца области действия таблиц предоставления прав.

Имена ролей отличаются от имён учётных записей в следующих отношениях:

  • Часть имени роли, относящаяся к пользователю, не может быть пустой. Таким образом, нет “анонимной роли”, аналогичной понятию “анонимный пользователь”.

  • Как и в имени учётной записи, опускание части имени хоста в имени роли приводит к части хоста, равной '%'. Но в отличие от '%' в имени учётной записи, часть хоста '%' в имени роли не имеет свойств подстановок. Например, для имени 'me'@'%', используемого как имя роли, часть хоста ('%') представляет собой просто значение; оно не имеет свойства сопоставления “любой хост”.

  • Нотация маски сети в части имени хоста имени роли не имеет значения.

  • Имя учётной записи может быть CURRENT_USER() в нескольких контекстах. Имя роли — нет.

Строка в таблице системы mysql.user может выполнять функцию как учётной записи, так и роли. В этом случае любые специальные свойства сопоставления имён пользователя или хоста не применяются в контекстах, в которых имя используется как имя роли. Например, вы не можете выполнить следующее утверждение с ожиданием, что оно установит роли текущей сессии, используя все роли, у которых часть пользователя равна myrole, а имя хоста — любое:

SET ROLE 'myrole'@'%';

Вместо этого утверждение устанавливает активную роль для сессии в роль с именем ровно 'myrole'@'%'.

По этой причине имена ролей часто указываются, используя только часть имени пользователя, и оставляя часть имени хоста неявной и равной '%'. Указание роли с частью хоста, отличной от '%', может быть полезно, если вы намереваетесь создать имя, которое работает как роль и как учётная запись пользователя, имеющего разрешение на подключение с указанного хоста.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/role-names.html

Spec-Zone.ru

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