SET ROLE
説明
現在のセッションで、ロールとその関連するすべての権限およびネストされたロールをアクティブにします。ロールがアクティブ化された後、ユーザーはこのロールを使用して操作を実行できます。
このコマンドを実行した後、select is_role_in_session("<role_name>");
を実行して、このロールが現在のセッションでアクティブかどうかを確認できます。
このコマンドは v3.0 からサポートされています。
使用上の注意
ユーザーは、自分に割り当てられたロールのみをアクティブにできます。
ユーザーのロールを照会するには、 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;