MySQL CURRENT_ROLE() 函数使用指南

MySQL CURRENT_ROLE() 函数返回一个表示当前会话当前激活的角色的字符串,多个角色使用逗号分隔。

CURRENT_ROLE() 语法

这里是 MySQL CURRENT_ROLE() 函数的语法:

CURRENT_ROLE()

参数

MySQL CURRENT_ROLE() 函数不需要任何参数。

返回值

CURRENT_ROLE() 函数返回一个 UTF8 字符串,它包含了当前会话的当前激活的角色。

CURRENT_ROLE() 示例

下面的示例展示了如何使用 CURRENT_ROLE() 函数当前的用户信息。

首先,让我们使用下面的语句创建一个用户 testuser

CREATE USER 'testuser'@'%' IDENTIFIED BY 'testuser123';

使用刚刚创建的用户登录 MySQL 服务器:

mysql --user=testuser --password=testuser123

使用下面的语句查看当前的角色:

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

这里, NONE 表示当前会话中并没有任何角色。

然后,让我们创建两个角色,并将两个角色赋予用户 testuser

CREATE ROLE test_role1, test_role2;
GRANT 'test_role1', 'test_role2' TO 'testuser'@'%';
SET DEFAULT ROLE ALL TO 'testuser'@'%';

重新登录 mysql,查看角色:

SELECT CURRENT_ROLE();
+-----------------------------------+
| CURRENT_ROLE()                    |
+-----------------------------------+
| `test_role1`@`%`,`test_role2`@`%` |
+-----------------------------------+

这里,返回了我们期望的结果。两个角色使用逗号分隔。

让我们使用下面的语句修改以下当前会话的角色为 test_role1

SET ROLE 'test_role1';

查看当前会话的角色:

SELECT CURRENT_ROLE();
+------------------+
| CURRENT_ROLE()   |
+------------------+
| `test_role1`@`%` |
+------------------+

这里只返回了一个角色。因为刚刚我们使用 SET ROLE 'test_role1'; 语句将当前会话的角色设置为了 test_role1