Перейти к содержимому

Управление пользователем

В Managed ClickHouse управлять пользователями можно с помощью SQL-запросов. С полным списком SQL-операторов ClickHouse вы можете ознакомиться в официальной документации ClickHouse.

Получить список пользователей в кластере

Заголовок раздела «Получить список пользователей в кластере»

Запросите список пользователей из системной таблицы system.users, которая содержит метаданные обо всех пользователях. Для этого используйте оператор SELECT и виртуальный движок clusterAllReplicas, который выполняет запрос к указанной таблице на всех узлах всех шардов заданного кластера.

  • В standalone-кластере
  • В multi-node-кластере
  1. Подключитесь к кластеру.

  2. Выполните запрос:

    sql
    SELECT name
    FROM system.users
    ORDER BY name;

Получить информацию о конкретном пользователе

Заголовок раздела «Получить информацию о конкретном пользователе»

Запросите данные о пользователе из системной таблицы system.users по его имени. Для просмотра используйте оператор SELECT.

  • В standalone-кластере
  • В multi-node-кластере
  1. Подключитесь к кластеру.

  2. Узнайте имя пользователя:

    sql
    SELECT name
    FROM system.users
    ORDER BY name;
  3. Выполните запрос:

    sql
    SELECT *
    FROM system.users
    WHERE name = '<имя пользователя>'
    LIMIT 1;

    Здесь условие LIMIT со значением 1 возвращает первую найденную запись из таблицы system.users.

Для создания пользователя используйте оператор CREATE.

  • В standalone-кластере
  • В multi-node-кластере
  1. Подключитесь к кластеру.

  2. Выполните запрос:

    sql
    CREATE USER [IF NOT EXISTS] <имя пользователя>
    IDENTIFIED BY '<пароль>';

    Условия в запросе:

    • IF NOT EXISTS — предотвращает ошибку, если пользователь с таким именем уже существует.
    • IDENTIFIED — задает, как пользователь будет проходить аутентификацию.

Для операции используйте оператор GRANT.

  • В standalone-кластере
  • В multi-node-кластере
  1. Подключитесь к кластеру.

  2. Узнайте имя пользователя:

    sql
    SELECT name
    FROM system.users
    ORDER BY name;
  3. Узнайте имя роли:

    sql
    SELECT name
    FROM system.roles
    ORDER BY name;
  4. Выполните запрос:

    sql
    GRANT <имя роли> TO <имя пользователя>;

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

Для операции используйте оператор GRANT.

  • В standalone-кластере
  • В multi-node-кластере
  1. Подключитесь к кластеру.

  2. Узнайте имя пользователя:

    sql
    SELECT name
    FROM system.users
    ORDER BY name;
  3. Выполните запрос:

    sql
    GRANT <привилегия> TO <имя пользователя>;

Запросите список назначенных пользователю ролей из системной таблицы system.users по имени пользователя. Для просмотра используйте оператор SELECT.

  • В standalone-кластере
  • В multi-node-кластере
  1. Подключитесь к кластеру.

  2. Узнайте имя пользователя:

    sql
    SELECT name
    FROM system.users
    ORDER BY name;
  3. Выполните запрос:

    sql
    SELECT granted_roles
    FROM system.users
    WHERE name = '<имя пользователя>';

Отозвать роль или привилегию у пользователя

Заголовок раздела «Отозвать роль или привилегию у пользователя»

Для операции используйте оператор REVOKE.

  • В standalone-кластере
  • В multi-node-кластере
  1. Подключитесь к кластеру.

  2. Узнайте имя пользователя:

    sql
    SELECT name
    FROM system.users
    ORDER BY name;
  3. Узнайте имя роли:

    sql
    SELECT name
    FROM system.roles
    ORDER BY name;
  4. Выполните запрос:

    sql
    REVOKE <имя роли или привилегия> FROM <имя пользователя>;
Важно

Назначайте профиль настроек или напрямую пользователю, или только одной из его ролей. Если для пользователя действуют сразу несколько профилей, ClickHouse произвольно применит только один из них.

Для операции используйте оператор ALTER USER.

  • В standalone-кластере
  • В multi-node-кластере
  1. Подключитесь к кластеру.

  2. Узнайте имя пользователя:

    sql
    SELECT name
    FROM system.users
    ORDER BY name;
  3. Узнайте имя профиля:

    sql
    SELECT name
    FROM system.settings_profiles
    ORDER BY name;
  4. Выполните запрос:

    sql
    ALTER USER <имя пользователя>
    SETTINGS PROFILE = '<имя профиля>';

    Пользователь будет использовать указанный профиль во всех новых сессиях.

Также вы можете назначить пользователю профиль настроек при создании профиля.

Запросите информацию о профиле, назначенном пользователю, из системной таблицы system.users. Для просмотра используйте оператор SELECT.

  • В standalone-кластере
  • В multi-node-кластере
  1. Подключитесь к кластеру.

  2. Узнайте имя пользователя:

    sql
    SELECT name
    FROM system.users
    ORDER BY name;
  3. Выполните запрос:

    sql
    SELECT name, settings_profile
    FROM system.users
    WHERE name = '<имя пользователя>';

В поле settings_profile будет указано имя профиля, назначенного пользователю. Если профиль не назначен, поле будет пустым.

Отозвать профиль настроек у пользователя

Заголовок раздела «Отозвать профиль настроек у пользователя»
Важно

После отзыва пользователю будет присвоен профиль настроек default. Убедитесь, что его достаточно для выполнения задач.

  • В standalone-кластере
  • В multi-node-кластере
  1. Подключитесь к кластеру.

  2. Узнайте имя пользователя:

    sql
    SELECT name
    FROM system.users
    ORDER BY name;
  3. Выполните запрос:

    sql
    ALTER USER <имя пользователя>
    SETTINGS PROFILE = NONE;

Для удаления пользователя используйте оператор DROP.

  • В standalone-кластере
  • В multi-node-кластере
  1. Подключитесь к кластеру.

  2. Узнайте имя пользователя:

    sql
    SELECT name
    FROM system.users
    ORDER BY name;
  3. Выполните запрос:

    sql
    DROP USER [IF EXISTS] <имя пользователя>;

    В запросе условие IF EXISTS предотвращает ошибку, если пользователя с таким именем не существует.