役割を設定する
SET ROLE
ステートメントは、現在のセッションでロールを有効にするために使用されます。ロールを有効にすると、ユーザーはロールの権限を使用できるようになります。
あらすじ
SetRoleStmt:
SetRoleOpt:
SetDefaultRoleOpt:
例
ユーザー'u1'@'%'
と 3 つのロール ( 'r1'@'%'
、 'r2'@'%'
、および'r3'@'%'
を作成します。これらのロールを'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)
次のSET ROLE
ステートメントを実行して、 'r2'
と'r3'
を有効にします。
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 のロール機能と完全な互換性があります。互換性の違いが見つかった場合は、 バグを報告 .