役割を設定

SET ROLEステートメントは、現在のセッションでロールを有効にするために使用されます。ロールを有効にすると、ユーザーはロールの権限を使用できるようになります。

概要

SetRoleStmt
SETROLEDEFAULTALLEXCEPTRolename,NONERolename,

ユーザー'u1'@'%''r1'@'%''r2'@'%''r3'@'%' 3 つのロールを作成します。これらのロールを'u1'@'%'に付与し、 'r1'@'%' 'u1'@'%'のデフォルト ロールとして設定します。

CREATE USER 'u1'@'%'; CREATE ROLE 'r1', 'r2', 'r3'; GRANT 'r1', 'r2', 'r3' TO 'u1'@'%'; SET DEFAULT ROLE 'r1' TO 'u1'@'%';

'u1'@'%'としてログインし、次のSET ROLEのステートメントを実行してすべてのロールを有効にします。

SET ROLE ALL; SELECT CURRENT_ROLE();
+----------------------------+ | CURRENT_ROLE() | +----------------------------+ | `r1`@`%`,`r2`@`%`,`r3`@`%` | +----------------------------+ 1 row in set (0.000 sec)

'r2''r3'を有効にするには、次のSET ROLEステートメントを実行します。

SET ROLE 'r2', 'r3'; SELECT CURRENT_ROLE();
+-------------------+ | CURRENT_ROLE() | +-------------------+ | `r2`@`%`,`r3`@`%` | +-------------------+ 1 row in set (0.000 sec)

デフォルトのロールを有効にするには、次のSET ROLEステートメントを実行します。

SET ROLE DEFAULT; SELECT CURRENT_ROLE();
+----------------+ | CURRENT_ROLE() | +----------------+ | `r1`@`%` | +----------------+ 1 row in set (0.000 sec)

有効なロールをすべてキャンセルするには、次のSET ROLEステートメントを実行します。

SET ROLE NONE; SELECT CURRENT_ROLE();
+----------------+ | CURRENT_ROLE() | +----------------+ | | +----------------+ 1 row in set (0.000 sec)

MySQL 互換性

TiDB のSET ROLEステートメントは、MySQL 8.0 のロール機能と完全に互換性があります。互換性の違いが見つかった場合は、 バグを報告

参照

このページは役に立ちましたか?