From 04c4028b3e00ccc77650e0a25801cd5c4e161c56 Mon Sep 17 00:00:00 2001 From: Lingyu Song Date: Wed, 27 May 2020 12:33:16 +0800 Subject: [PATCH 1/2] cherry pick #3358 to release-3.1 Signed-off-by: ti-srebot --- sql-statements/sql-statement-set-role.md | 113 +++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 sql-statements/sql-statement-set-role.md diff --git a/sql-statements/sql-statement-set-role.md b/sql-statements/sql-statement-set-role.md new file mode 100644 index 000000000000..860d0c55d79b --- /dev/null +++ b/sql-statements/sql-statement-set-role.md @@ -0,0 +1,113 @@ +--- +title: SET ROLE +summary: TiDB 数据库中 SET ROLE 的使用概况。 +category: reference +--- + +# SET ROLE + +`SET ROLE` 用于在当前用户会话中启用角色。使用 `SET ROLE` 启用角色后,用户可以使用这些角色的权限。 + +## 语法图 + +**SetRoleStmt:** + +![SetRoleStmt](/media/sqlgram/SetRoleStmt.png) + +**SetRoleOpt:** + +![SetRoleOpt](/media/sqlgram/SetRoleOpt.png) + +**SetDefaultRoleOpt:** + +![SetDefaultRoleOpt](/media/sqlgram/SetDefaultRoleOpt.png) + +## 示例 + +创建一个用户 `'u1'@'%'`, 创建三个角色 `'r1'@'%'`, `'r2'@'%'`, `'r3'@'%'` 并将这些角色授予给 `'u1'@'%'`。 +将 `'u1'@'%'` 的默认启用角色设置为 `'r1'@'%'`。 + +{{< copyable "sql" >}} + +```sql +CREATE USER 'u1'@'%'; +CREATE ROLE 'r1', 'r2', 'r3'; +GRANT 'r1', 'r2', 'r3' TO 'u1'@'%'; +SET DEFAULT ROLE 'r1' TO 'u1'@'%'; +``` + +使用 `'u1'@'%'` 登录,执行 `SET ROLE` 将启用角色设置为 `ALL`。 + +{{< copyable "sql" >}} + +```sql +SET ROLE ALL; +SELECT CURRENT_ROLE(); +``` + +``` ++----------------------------+ +| CURRENT_ROLE() | ++----------------------------+ +| `r1`@`%`,`r2`@`%`,`r3`@`%` | ++----------------------------+ +1 row in set (0.000 sec) +``` + +执行 `SET ROLE` 将启用角色设置为 `'r2'` 和 `'r3'`。 + +{{< copyable "sql" >}} + +```sql +SET ROLE 'r2', 'r3'; +SELECT CURRENT_ROLE(); +``` + +``` ++-------------------+ +| CURRENT_ROLE() | ++-------------------+ +| `r2`@`%`,`r3`@`%` | ++-------------------+ +1 row in set (0.000 sec) +``` + +执行 `SET ROLE` 将启用角色设置为 `DEFALUT`。 + +{{< copyable "sql" >}} + +```sql +SET ROLE DEFAULT; +SELECT CURRENT_ROLE(); +``` + +``` ++----------------+ +| CURRENT_ROLE() | ++----------------+ +| `r1`@`%` | ++----------------+ +1 row in set (0.000 sec) +``` + +执行 `SET ROLE` 将启用角色设置为 `NONE`。 + +{{< copyable "sql" >}} + +```sql +SET ROLE NONE; +SELECT CURRENT_ROLE(); +``` + +``` ++----------------+ +| CURRENT_ROLE() | ++----------------+ +| | ++----------------+ +1 row in set (0.000 sec) +``` + +## 另请参阅 + +* [基于角色的访问控制](/role-based-access-control.md) From e486b9d1da5938be1bb79a56c10185a378e530be Mon Sep 17 00:00:00 2001 From: yikeke Date: Mon, 15 Jun 2020 18:50:59 +0800 Subject: [PATCH 2/2] add 3 missing images --- TOC.md | 1 + media/sqlgram/SetDefaultRoleOpt.png | Bin 0 -> 6229 bytes media/sqlgram/SetRoleOpt.png | Bin 0 -> 10005 bytes media/sqlgram/SetRoleStmt.png | Bin 0 -> 4423 bytes 4 files changed, 1 insertion(+) create mode 100644 media/sqlgram/SetDefaultRoleOpt.png create mode 100644 media/sqlgram/SetRoleOpt.png create mode 100644 media/sqlgram/SetRoleStmt.png diff --git a/TOC.md b/TOC.md index ea6ecc92f42e..35ec29289892 100644 --- a/TOC.md +++ b/TOC.md @@ -189,6 +189,7 @@ - [`SELECT`](/sql-statements/sql-statement-select.md) - [`SET [NAMES|CHARACTER SET]`](/sql-statements/sql-statement-set-names.md) - [`SET PASSWORD`](/sql-statements/sql-statement-set-password.md) + - [`SET ROLE`](/sql-statements/sql-statement-set-role.md) - [`SET TRANSACTION`](/sql-statements/sql-statement-set-transaction.md) - [`SET [GLOBAL|SESSION] `](/sql-statements/sql-statement-set-variable.md) - [`SHOW CHARACTER SET`](/sql-statements/sql-statement-show-character-set.md) diff --git a/media/sqlgram/SetDefaultRoleOpt.png b/media/sqlgram/SetDefaultRoleOpt.png new file mode 100644 index 0000000000000000000000000000000000000000..02cb81cb85decff4e28d401fc0313a4650f3caf0 GIT binary patch literal 6229 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 literal 0 HcmV?d00001 diff --git a/media/sqlgram/SetRoleOpt.png b/media/sqlgram/SetRoleOpt.png new file mode 100644 index 0000000000000000000000000000000000000000..96fd1e018e27ee04d8b2ae18e7c01e30bb76a6d8 GIT binary patch literal 10005 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 N002ovPDHLkV1nD5dwT!? literal 0 HcmV?d00001