Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

EXECUTE AS

ClickHouse Cloud 不支持此功能

允许以其他用户身份执行查询。

语法

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(); -- outputs "default    default"
CREATE USER james;
EXECUTE AS james SELECT currentUser(), authenticatedUser(); -- outputs "james    default"
Navigation