Перейти к основному содержанию
Перейти к основному содержанию

Права для запросов

Запросы в ClickHouse можно разделить на несколько типов:

  1. Запросы на чтение данных: SELECT, SHOW, DESCRIBE, EXISTS.
  2. Запросы на запись данных: INSERT, OPTIMIZE.
  3. Запросы на изменение настроек: SET, USE.
  4. Запросы DDL: CREATE, ALTER, RENAME, ATTACH, DETACH, DROP, TRUNCATE.
  5. KILL QUERY.

Следующие настройки регулируют права пользователей в зависимости от типа запроса:

readonly

Ограничивает права доступа для запросов на чтение данных, запись данных и изменение настроек.

При значении 1 разрешаются:

  • Все типы запросов на чтение (такие как SELECT и эквивалентные запросы).
  • Запросы, которые изменяют только контекст сессии (например, USE).

При значении 2 разрешается всё вышеперечисленное, а также:

  • SET и CREATE TEMPORARY TABLE

    Совет

    Такие запросы, как EXISTS, DESCRIBE, EXPLAIN, SHOW PROCESSLIST и т. д., эквивалентны SELECT, потому что они просто выполняют чтение из системных таблиц.

Возможные значения:

  • 0 — Разрешены запросы на чтение, запись и изменение настроек.
  • 1 — Разрешены только запросы на чтение данных.
  • 2 — Разрешены запросы на чтение данных и изменение настроек.

Значение по умолчанию: 0

Примечание

После установки readonly = 1 пользователь не может изменить настройки readonly и allow_ddl в текущей сессии.

При использовании метода GET в HTTP-интерфейсе значение readonly = 1 устанавливается автоматически. Для изменения данных используйте метод POST.

Установка readonly = 1 запрещает пользователю менять настройки. Существует способ запретить пользователю изменение только отдельных настроек. Также существует способ разрешить изменение только отдельных настроек при ограничении readonly = 1. Подробности см. в разделе ограничения на настройки.

allow_ddl

Разрешает или запрещает выполнение DDL-запросов.

Возможные значения:

  • 0 — выполнение DDL-запросов запрещено.
  • 1 — выполнение DDL-запросов разрешено.

Значение по умолчанию: 1

Примечание

Нельзя выполнить SET allow_ddl = 1, если для текущего сеанса allow_ddl = 0.

KILL QUERY

Команда KILL QUERY может выполняться при любой комбинации значений параметров readonly и allow_ddl.