Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

EXECUTE AS

Sem suporte no ClickHouse Cloud

Permite executar consultas em nome de outro usuário.

Sintaxe

EXECUTE AS target_user;
EXECUTE AS target_user subquery;

A primeira forma (sem subquery) estabelece que todas as consultas subsequentes na sessão atual serão executadas em nome do target_user especificado.

A segunda forma (com subquery) executa apenas a subquery especificada em nome do target_user especificado.

Para que ambas as formas funcionem, é necessário que a configuração access_control_improvements.allow_impersonate_user esteja definida como 1 e que o privilégio IMPERSONATE tenha sido concedido. Por exemplo, os seguintes comandos

GRANT IMPERSONATE ON user1 TO user2;
GRANT IMPERSONATE ON * TO user3;

permitem que o usuário user2 execute comandos EXECUTE AS user1 ... e também permitem que o usuário user3 execute comandos como qualquer outro usuário.

Ao assumir a identidade de outro usuário, a função currentUser() retorna o nome desse outro usuário, e a função authenticatedUser() retorna o nome do usuário que foi efetivamente autenticado.

Exemplos

SELECT currentUser(), authenticatedUser(); -- outputs "default    default"
CREATE USER james;
EXECUTE AS james SELECT currentUser(), authenticatedUser(); -- outputs "james    default"
Navigation