跳到主要内容
版本: 最新版本-3.5

EXECUTE AS

使用 IMPERSONATE 权限和 EXECUTE AS 语句可以将当前会话的执行上下文切换为被模拟用户。

该命令从 v2.4 版本开始支持。

语法

EXECUTE AS user WITH NO REVERT

参数

user:用户必须已经存在。

使用说明

  • 当前的登录用户(调用 EXECUTE AS 语句的用户)必须被授予模拟其他用户的权限。更多信息,请参见 GRANT
  • EXECUTE AS 语句必须包含 WITH NO REVERT 子句,这意味着当前会话的执行上下文在当前会话结束之前不能切换回原始登录用户。

示例

将当前会话的执行上下文切换到用户 test2

EXECUTE AS test2 WITH NO REVERT;

切换成功后,您可以运行 select current_user() 命令来获取当前用户。

select current_user();
+-----------------------------+
| CURRENT_USER() |
+-----------------------------+
| 'default_cluster:test2'@'%' |
+-----------------------------+