メインコンテンツまでスキップ
バージョン: Latest-3.4

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;

現在のユーザーのアクティブなロールを照会します。

SELECT CURRENT_ROLE();
+--------------------+
| CURRENT_ROLE() |
+--------------------+
| db_admin |
+--------------------+

参考

  • CREATE ROLE: ロールを作成します。
  • GRANT: ユーザーまたは他のロールにロールを割り当てます。
  • ALTER USER: ロールを変更します。
  • SHOW ROLES: システム内のすべてのロールを表示します。
  • current_role: 現在のユーザーのロールを表示します。
  • is_role_in_session: ロール(またはネストされたロール)が現在のセッションでアクティブかどうかを確認します。
  • DROP ROLE: ロールを削除します。