> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8c05c8a2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Документация по оператору EXECUTE AS

# Оператор EXECUTE AS

export const CloudNotSupportedBadge = () => {
  return <div className="cloudNotSupportedBadge">
            <div className="cloudNotSupportedIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.5" d="M6.33366 12.6666L12.3739 12.6667C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00003 12.3739 8.00003C12.3739 8.00003 12.3337 7.66659 12.0003 7.33325M10.667 5.33322C8.00033 2.33325 4.45395 4.78537 4.14195 6.68203C2.55728 6.7627 1.29395 8.06203 1.29395 9.6667C1.29395 11.3234 2.66699 12.6666 4.00033 12.6666" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.5" d="M2.66699 14L12.0003 4.66663" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>

        </div>
            Не поддерживается в ClickHouse Cloud
        </div>;
};

Позволяет выполнять запросы от имени другого пользователя.

<div id="syntax">
  ## Синтаксис
</div>

```sql theme={null}
EXECUTE AS target_user;
EXECUTE AS target_user subquery;
```

Первая форма (без `subquery`) задаёт, что все последующие запросы в текущем сеансе будут выполняться от имени указанного `target_user`.

Вторая форма (с `subquery`) выполняет только указанный `subquery` от имени указанного `target_user`.

Для работы обеих форм требуется, чтобы параметр конфигурации `access_control_improvements.allow_impersonate_user`
был установлен в `1`, а привилегия `IMPERSONATE` — выдана. Например, следующие команды

```sql theme={null}
GRANT IMPERSONATE ON user1 TO user2;
GRANT IMPERSONATE ON * TO user3;
```

разрешить пользователю `user2` выполнять команды `EXECUTE AS user1 ...`, а также разрешить пользователю `user3` выполнять команды от имени любого пользователя.

При работе от имени другого пользователя функция [currentUser()](/ru/reference/functions/regular-functions/other-functions#currentUser) возвращает имя этого пользователя,
а функция [authenticatedUser()](/ru/reference/functions/regular-functions/other-functions#authenticatedUser) возвращает имя пользователя, который фактически прошёл аутентификацию.

<div id="examples">
  ## Примеры
</div>

```sql theme={null}
SELECT currentUser(), authenticatedUser(); -- выводит "default    default"
CREATE USER james;
EXECUTE AS james SELECT currentUser(), authenticatedUser(); -- выводит "james    default"
```
