SET ROLE
SET ROLE активирует роли вместе со всеми связанными привилегиями и вложенными ролями для текущей сессии. После активации роли пользователи могут использовать эту роль для выполнения операций.
После выполнения этой команды вы можете запустить select is_role_in_session("<role_name>");, чтобы проверить, активна ли эта роль в текущей сессии.
Эта команда поддерживается начиная с версии v1.5.2.
Примечания по использованию
Пользователи могут активировать только роли, которые были им назначены.
Вы можете запросить роли пользователя с помощью SHOW GRANTS.
Вы можете запросить активные роли текущего пользователя с помощью SELECT CURRENT_ROLE(). Для получения дополнительной информации см. current_role.
Синтаксис
-- Активировать определенные роли и выполнять операции от имени этой роли.
SET ROLE <role_name>[,<role_name>,..];
-- Активировать все роли пользователя, за исключением определенных ролей.
SET ROLE ALL EXCEPT <role_name>[,<role_name>,..];
-- Активировать все роли пользователя.
SET ROLE ALL;
Параметры
role_name: имя роли
Примеры
Запросить все роли текущего пользователя.
SHOW GRANTS;
+--------------+---------+----------------------------------------------+
| UserIdentity | Catalog | Grants |
+--------------+---------+----------------------------------------------+
| 'test'@'%' | NULL | GRANT 'db_admin', 'user_admin' TO 'test'@'%' |
+--------------+---------+----------------------------------------------+
Активировать роль db_admin.
SET ROLE db_admin;
Запросить активные роли текущего пользователя.
SELECT CURRENT_ROLE();
+--------------------+
| CURRENT_ROLE() |
+--------------------+
| db_admin |
+--------------------+
Ссылки
- CREATE ROLE: создает роль.
- GRANT: назначает роли пользователям или другим ролям.
- ALTER USER: изменяет роли.
- SHOW ROLES: показывает все роли в системе.
- current_role: показывает роли текущего пользователя.
- is_role_in_session: проверяет, активна ли роль (или вложенная роль) в текущей сессии.
- DROP ROLE: удаляет роль.