跳转到主要内容
允许以其他用户身份执行查询。

语法

EXECUTE AS target_user;
EXECUTE AS target_user subquery;
第一种形式 (不带 subquery) 会将当前 session 中后续的所有查询设置为以指定的 target_user 身份执行。 第二种形式 (带 subquery) 仅会以指定的 target_user 身份执行指定的 subquery 要使这两种形式都能生效,需要将配置项 access_control_improvements.allow_impersonate_user 设置为 1,并授予 IMPERSONATE 权限。例如,以下命令
GRANT IMPERSONATE ON user1 TO user2;
GRANT IMPERSONATE ON * TO user3;
允许用户 user2 执行 EXECUTE AS user1 ... 命令,同时也允许用户 user3 以任意用户身份执行命令。 在伪装为另一个用户时,函数 currentUser() 返回该用户的名称, 而函数 authenticatedUser() 返回实际通过身份验证的用户名称。

示例

SELECT currentUser(), authenticatedUser(); -- 输出 "default    default"
CREATE USER james;
EXECUTE AS james SELECT currentUser(), authenticatedUser(); -- 输出 "james    default"
最后修改于 2026年6月10日