Управление пользователями ClickHouse
Managed Service for ClickHouse позволяет управлять пользователями и их индивидуальными настройками двумя способами:
- С помощью стандартных интерфейсов Yandex Cloud (CLI, API, консоль управления). Способ подходит, если вы хотите добавлять, изменять и удалять пользователей и их индивидуальные настройки, используя возможности сервиса Yandex Managed Service for ClickHouse.
- С помощью SQL-запросов к кластеру. Способ подходит, если вы хотите использовать уже существующее у вас решение для создания и управления пользователями или если вы используете RBAC.
Управление пользователями через SQL
Чтобы включить управление, выберите опцию Управление пользователями через SQL при создании или изменении настроек кластера.
В кластере с включенным управлением пользователями через SQL:
- Управление пользователями через стандартные интерфейсы Yandex Cloud (CLI, API, консоль управления) недоступно.
- Невозможно включить управление пользователями с помощью стандартных интерфейсов Yandex Cloud.
- Существующие пользователи и настройки пользователей, созданные с помощью стандартных интерфейсов Yandex Cloud, будут сохранены.
- Управление пользователями осуществляется с помощью учетной записи
admin
. Пароль для нее задается при выборе опции Управление пользователями через SQL.
Подробнее об управлении пользователями через SQL см. в документации ClickHouse.
Получить список пользователей
- В консоли управления перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
- Нажмите на имя нужного кластера, затем выберите вкладку Пользователи.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы получить список пользователей кластера, выполните команду:
yc managed-clickhouse user list
--cluster-name=<имя кластера>
Имя кластера можно запросить со списком кластеров в каталоге.
-
Подключитесь к кластеру, используя учетную запись
admin
. -
Получите список пользователей:
SHOW USERS;
Воспользуйтесь методом API list и передайте в запросе идентификатор кластера в параметре clusterId
.
Идентификатор кластера можно получить со списком кластеров в каталоге.
Добавить пользователя
-
В консоли управления перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
-
Нажмите на имя нужного кластера и выберите вкладку Пользователи.
-
Нажмите кнопку Добавить.
-
Введите имя пользователя базы данных и пароль.
Примечание
Имя пользователя может содержать латинские буквы, цифры, дефис и нижнее подчеркивание, но должно начинаться с буквы или нижнего подчеркивания.
Длина пароля от 8 до 128 символов.
-
Выберите одну или несколько баз данных, к которым должен иметь доступ пользователь:
- Нажмите на значок
- Повторите предыдущий шаг, пока не будут выбраны все требуемые базы данных.
- Чтобы удалить базу, добавленную по ошибке, нажмите на значок
справа от имени базы.
- Нажмите на значок
-
Задайте дополнительные настройки для пользователя:
- Настройте квоты в разделе Дополнительные настройки → Quotas:
- Чтобы добавить квоту, нажмите на значок
или кнопку + Quotas. Вы можете добавить несколько квот, которые будут действовать одновременно. - Чтобы удалить квоту, нажмите на значок
- Чтобы изменить квоту, задайте требуемые значения настроек для нее.
- Чтобы добавить квоту, нажмите на значок
- Настройте ClickHouse в разделе Дополнительные настройки → Settings.
- Настройте квоты в разделе Дополнительные настройки → Quotas:
-
Нажмите кнопку Добавить.
См. также: пример создания пользователя с правами «только чтение».
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы создать пользователя в кластере, выполните команду:
yc managed-clickhouse user create <имя пользователя> \
--cluster-name=<имя кластера> \
--password=<пароль пользователя> \
--permissions=<список баз, к которым пользователь должен иметь доступ> \
--quota=<список настроек одной квоты для пользователя> \
--settings=<список настроек ClickHouse для пользователя>
Примечание
Имя пользователя может содержать латинские буквы, цифры, дефис и нижнее подчеркивание, но должно начинаться с буквы или нижнего подчеркивания.
Длина пароля от 8 до 128 символов.
Подробнее о квотах и настройках ClickHouse читайте в разделе Настройки ClickHouse.
Чтобы задать несколько квот, перечислите их, используя требуемое количество параметров --quota
в команде:
yc managed-clickhouse user create <имя пользователя> \
...
--quota="<настройки квоты 0>" \
--quota="<настройки квоты 1>" \
...
Имя кластера можно запросить со списком кластеров в каталоге.
См. также: пример создания пользователя с правами «только чтение».
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание ClickHouse-кластера.
-
Добавьте к описанию кластера Managed Service for ClickHouse блок
user
:resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" { ... user { name = "<имя пользователя>" password = "<пароль>" ... } }
Примечание
Имя пользователя может содержать латинские буквы, цифры, дефис и нижнее подчеркивание, но должно начинаться с буквы или нижнего подчеркивания.
Длина пароля от 8 до 128 символов.
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform.
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse:
- создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
- изменение — 90 минут;
- удаление — 30 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Добавьте к описанию кластера блок timeouts
, например:
resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
-
Подключитесь к кластеру, используя учетную запись
admin
. -
Создайте пользователя:
CREATE USER <имя пользователя> IDENTIFIED WITH sha256_password BY '<пароль пользователя>';
Примечание
Имя пользователя может содержать латинские буквы, цифры, дефис и нижнее подчеркивание, но должно начинаться с буквы или нижнего подчеркивания.
Длина пароля от 8 до 128 символов.
Подробнее о создании пользователей см. в документации ClickHouse.
Воспользуйтесь методом API create и передайте в запросе:
- Идентификатор кластера в параметре
clusterId
. Идентификатор кластера можно получить со списком кластеров в каталоге. - Имя нового пользователя в параметре
userSpec.name
. - Пароль нового пользователя в параметре
userSpec.password
. - (Опционально) Список баз, к которым пользователь должен иметь доступ, в параметре
userSpec.permissions[]
. - (Опционально) Список настроек ClickHouse для пользователя в параметре
userSpec.settings
. - (Опционально) Список настроек квот для пользователя в параметре
userSpec.quotas[]
.
Изменить пароль
- В консоли управления перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
- Нажмите на имя нужного кластера и выберите вкладку Пользователи.
- Нажмите на значок
- Задайте новый пароль и нажмите кнопку Изменить.
Примечание
Длина пароля от 8 до 128 символов.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы изменить пароль пользователя, выполните команду:
yc managed-clickhouse user update <имя пользователя> \
--cluster-name=<имя кластера> \
--password=<новый пароль>
Примечание
Длина пароля от 8 до 128 символов.
Имя кластера можно запросить со списком кластеров в каталоге.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание ClickHouse-кластера.
-
Найдите в описании кластера Managed Service for ClickHouse блок
user
для нужного пользователя. -
Измените значение поля
password
:resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" { ... user { name = "<имя пользователя>" password = "<новый пароль>" ... } }
Примечание
Длина пароля от 8 до 128 символов.
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform.
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse:
- создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
- изменение — 90 минут;
- удаление — 30 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Добавьте к описанию кластера блок timeouts
, например:
resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
-
Подключитесь к кластеру, используя учетную запись
admin
. -
Измените пароль пользователя:
ALTER USER <имя пользователя> IDENTIFIED BY '<новый пароль>';
Примечание
Длина пароля от 8 до 128 символов.
Подробнее об изменении пользователей см. в документации ClickHouse.
Воспользуйтесь методом API update и передайте в запросе:
-
Идентификатор кластера в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. -
Новый пароль в параметре
password
.Примечание
Длина пароля от 8 до 128 символов.
-
Список полей конфигурации пользователя, которые необходимо изменить (в данном случае —
password
), в параметреupdateMask
.
Важно
Этот метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask
(одной строкой через запятую).
Изменить пароль пользователя admin
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы изменить пароль пользователя admin
, выполните команду:
yc managed-clickhouse cluster update <идентификатор или имя кластера> \
--admin-password <новый пароль пользователя admin>
Примечание
Длина пароля от 8 до 128 символов.
Идентификатор и имя кластера можно запросить со списком кластеров в каталоге.
Совет
- Для повышения безопасности вместо
--admin-password
используйте параметр--read-admin-password
: новый пароль нужно будет ввести с клавиатуры, и он не сохранится в истории команд. - Чтобы сгенерировать пароль автоматически, используйте параметр
--generate-admin-password
. Ответ на команду будет содержать новый пароль.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание ClickHouse-кластера.
-
Измените значение поля
admin_password
:resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" { ... admin_password = "<пароль пользователя admin>" ... }
Примечание
Длина пароля от 8 до 128 символов.
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform.
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse:
- создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
- изменение — 90 минут;
- удаление — 30 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Добавьте к описанию кластера блок timeouts
, например:
resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
-
Подключитесь к кластеру от имени пользователя
admin
. -
Выполните SQL-запрос:
ALTER USER admin IDENTIFIED BY '<новый пароль>';
Примечание
Длина пароля от 8 до 128 символов.
Подробнее см. в документации ClickHouse.
Воспользуйтесь методом API update и передайте в запросе:
-
Идентификатор кластера в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. -
Новый пароль в параметре
configSpec.adminPassword
.Примечание
Длина пароля от 8 до 128 символов.
-
Список полей конфигурации пользователя, которые необходимо изменить (в данном случае —
configSpec.adminPassword
), в параметреupdateMask
.
Важно
Этот метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask
(одной строкой через запятую).
Изменить настройки пользователя
- В консоли управления перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
- Нажмите на имя нужного кластера и выберите вкладку Пользователи.
- Нажмите на значок
- Настройте права пользователя на доступ к определенным базам данных:
- Чтобы предоставить доступ к требуемым базам данных:
- Нажмите на значок
- Повторите предыдущий шаг, пока не будут выбраны все требуемые базы данных.
- Нажмите на значок
- Чтобы удалить базу, нажмите на значок
справа от имени базы.
- Чтобы предоставить доступ к требуемым базам данных:
- Настройте квоты для пользователя в разделе Дополнительные настройки → Quotas:
- Чтобы добавить квоту, нажмите + Quotas. Вы можете добавить несколько квот, которые будут действовать одновременно.
- Чтобы удалить квоту, нажмите на значок
- Чтобы изменить квоту, задайте требуемые значения настроек для нее.
- Измените настройки ClickHouse для пользователя в разделе Дополнительные настройки → Settings.
- Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Из интерфейса командной строки можно изменить настройки пользователя:
-
Чтобы настроить права пользователя на доступ к определенным базам данных, выполните команду, перечислив список имен баз данных с помощью параметра
--permissions
:yc managed-clickhouse user update <имя пользователя> \ --cluster-name=<имя кластера> \ --permissions=<список баз, к которым пользователь должен иметь доступ>
Имя кластера можно запросить со списком кластеров в каталоге.
Эта команда предоставляет пользователю доступ к базам данных, указанным в списке.
Чтобы отозвать доступ к определенной базе, исключите ее имя из списка и передайте команде обновленный список.
-
Чтобы изменить настройки квот для пользователя, выполните команду, перечислив список всех квот, с помощью параметров
--quota
(один параметр на каждую квоту):yc managed-clickhouse user update <имя пользователя> \ --cluster-name=<имя кластера> \ --quota=<настройки квоты 0 (без изменений)> \ --quota=<настройки квоты 1 (без изменений)> \ --quota=<настройки квоты 2 (с изменениями)> \ --quota=<настройки квоты 3 (без изменений)> \ --quota=<настройки квоты 4 (с изменениями)> \ --quota=<настройки квоты 5 (новая квота)> ...
Имя кластера можно запросить со списком кластеров в каталоге.
Эта команда перезаписывает все существующие настройки квот пользователя новыми настройками, набор которых был передан команде.
Перед выполнением команды убедитесь, что вы включили в этот набор как настройки новых и измененных квот, так и настройки существующих квот, которые не изменялись.Чтобы удалить одну или несколько квот пользователя, исключите настройки этих квот из набора и передайте команде обновленный набор параметров
--quota
.При задании интервала для квоты допустимо использовать запись с указанием единиц измерения: часов (
h
), минут (m
), секунд (s
) и миллисекунд (ms
). Пример такой записи:3h20m10s7000ms
(итоговое значение представляется по-прежнему в миллисекундах:12017000
). Значение интервала должно быть кратно 1000 миллисекунд (значение вида1s500ms
является некорректным). -
Чтобы изменить настройки ClickHouse для пользователя, выполните команду, перечислив измененные настройки с помощью параметра
--settings
:yc managed-clickhouse user update <имя пользователя> \ --cluster-name=<имя кластера> \ --settings=<список настроек ClickHouse>
Имя кластера можно запросить со списком кластеров в каталоге.
Команда изменит только те настройки, которые явно указаны в параметре
--settings
. Например, команда с параметром--settings="readonly=1"
изменит только настройкуreadonly
и не сбросит значения остальных. Этим изменение настроек ClickHouse отличается от изменения настроек квот.С помощью этой команды невозможно удалить сделанную настройку, допустимо только явно присвоить ей значение по умолчанию (оно указано для каждой настройки).
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание ClickHouse-кластера.
-
Чтобы настроить права пользователя на доступ к определенным базам данных, добавьте необходимое количество блоков
permission
к описанию пользователя кластера — по одному на каждую базу:resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" { ... user { name = "<имя пользователя>" password = "<пароль>" permission { database_name = "<база данных 1>" } ... permission { database_name = "<база данных N>" } } }
В поле
database_name
укажите имя базы данных, к которой нужно предоставить доступ. -
Чтобы изменить настройки квот для пользователя, добавьте необходимое количество блоков
quota
к его описанию.При описании квот обязательным является только поле
interval_duration
.resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" { ... user { name = "<имя пользователя>" password = "<пароль>" ... quota { interval_duration = <длительность интервала в миллисекундах> ... } } }
-
Чтобы изменить настройки ClickHouse для пользователя, добавьте блок
settings
к его описанию.resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" { ... user { name = "<имя пользователя>" password = "<пароль>" ... settings { <настройки СУБД для отдельного пользователя> } } }
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform.
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse:
- создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
- изменение — 90 минут;
- удаление — 30 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Добавьте к описанию кластера блок timeouts
, например:
resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
-
Подключитесь к кластеру, используя учетную запись
admin
. -
Чтобы изменить набор привилегий и ролей пользователя, используйте запросы GRANT и REVOKE. Например, выдайте пользователю права на чтение всех объектов в определенной базе данных:
GRANT SELECT ON <имя базы данных>.* TO <имя пользователя>;
-
Чтобы изменить настройки квот для пользователя, используйте запросы CREATE QUOTA, ALTER QUOTA и DROP QUOTA. Например, ограничьте суммарное количество запросов пользователя за период 15 месяцев:
CREATE QUOTA <название квоты> FOR INTERVAL 15 MONTH MAX QUERIES 100 TO <имя пользователя>;
-
Чтобы изменить учетную запись пользователя, используйте запрос ALTER USER. Например для изменения настроек ClickHouse выполните следующую команду, перечислив настройки подлежащие изменению:
ALTER USER <имя пользователя> SETTINGS <список настроек ClickHouse>;
Воспользуйтесь методом API update и передайте в запросе:
- Идентификатор кластера в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. - Имя пользователя, настройки которого будут изменены, в параметре
userName
. Чтобы узнать имя, получите список пользователей. - (Опционально) Список баз, к которым пользователь должен иметь доступ, в параметре
userSpec.permissions[]
. - (Опционально) Список настроек ClickHouse для пользователя в параметре
userSpec.settings
. - (Опционально) Список настроек квот для пользователя в параметре
userSpec.quotas[]
. - Список полей конфигурации пользователя, которые необходимо изменить, в параметре
updateMask
.
Важно
Этот метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask
(одной строкой через запятую).
Удалить пользователя
- В консоли управления перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
- Нажмите на имя нужного кластера и выберите вкладку Пользователи.
- Нажмите на значок
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы удалить пользователя, выполните команду:
yc managed-clickhouse user delete <имя пользователя> \
--cluster-name=<имя кластера>
Имя кластера можно запросить со списком кластеров в каталоге.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание ClickHouse-кластера.
-
Удалите из описания кластера Managed Service for ClickHouse блок
user
с описанием нужного пользователя. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform.
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse:
- создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
- изменение — 90 минут;
- удаление — 30 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Добавьте к описанию кластера блок timeouts
, например:
resource "yandex_mdb_clickhouse_cluster" "<имя кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
-
Подключитесь к кластеру, используя учетную запись
admin
. -
Удалите пользователя:
DROP USER <имя пользователя>;
Подробнее об удалении объектов см. в документации ClickHouse.
Воспользуйтесь методом API delete и передайте в запросе:
- Идентификатор кластера в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. - Имя пользователя, настройки которого будут изменены, в параметре
userName
. Чтобы узнать имя, получите список пользователей.
Примеры
Создание пользователя с настройкой «только чтение»
Допустим, нужно добавить в существующий кластер с именем mych
нового пользователя ro-user
с паролем Passw0rd
, причем:
- пользователь должен иметь доступ к базе данных
db1
кластера; - доступ должен осуществляться в режиме «только чтение» (readonly), без возможности изменения настроек.
- В консоли управления перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
- Нажмите на кластер с именем
mych
и выберите вкладку Пользователи. - Нажмите кнопку Добавить.
- Введите имя пользователя базы данных
ro-user
и парольPassw0rd
. - Нажмите на значок
db1
из выпадающего списка. - Выберите Дополнительные настройки → Settings → Readonly.
- В поле Readonly укажите значение
1
. - Нажмите кнопку Добавить.
Запустите следующую команду:
yc managed-clickhouse user create "ro-user" \
--cluster-name="mych" \
--password="Passw0rd" \
--permissions="db1" \
--settings="readonly=1"
После создания пользователя проверьте, что он действительно работает в режиме «только чтение»:
-
Подключитесь к кластеру ClickHouse
mych
, используя созданного пользователяro-user
. -
Попытайтесь изменить какую-нибудь настройку, например, попытайтесь отключить режим «только чтение»:
SET readonly=0
В результате выполнения команды должно отобразиться сообщение о невозможности изменения настройки в режиме «только чтение»:
DB::Exception: Cannot modify 'readonly' setting in readonly mode.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание ClickHouse-кластера.
-
Добавьте к описанию кластера блок
user
.resource "yandex_mdb_clickhouse_cluster" "mych" { name = "mych" database { name = "db1" } user { name = "ro-user" password = "Passw0rd" permission { database_name = "db1" } settings { readonly = 1 } } ... }
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
-
Подключитесь к кластеру
mych
, используя учетную записьadmin
. -
Создайте пользователя:
CREATE USER ro-user IDENTIFIED WITH sha256_password BY 'Passw0rd';
-
Выдайте пользователю права на чтение всех объектов базы данных
db1
:GRANT SELECT ON db1.* TO ro-user;