Интерфейс MySQL
ClickHouse поддерживает сетевой протокол MySQL (MySQL wire protocol). Это позволяет некоторым клиентам, у которых нет нативных коннекторов для ClickHouse, использовать вместо них протокол MySQL. Он был проверен со следующими BI‑инструментами:
Если вы пробуете другие, ещё не протестированные клиенты или интеграции, имейте в виду, что возможны следующие ограничения:
- Реализация SSL может быть не полностью совместима; возможны проблемы с TLS SNI.
- Конкретный инструмент может требовать особенности диалекта (например, функции или настройки, специфичные для MySQL), которые ещё не реализованы.
Если доступен нативный драйвер (например, DBeaver), всегда предпочтительнее использовать его вместо интерфейса MySQL. Кроме того, хотя большинство MySQL‑клиентов должно работать корректно, интерфейс MySQL не гарантирует полной взаимозаменяемости с кодовой базой, использующей существующие MySQL‑запросы.
Если ваш сценарий использования зависит от конкретного инструмента, у которого нет нативного драйвера для ClickHouse, и вы хотите использовать его через интерфейс MySQL и обнаружили определённые несовместимости — пожалуйста, создайте issue в репозитории ClickHouse.
Для более полной поддержки SQL‑диалекта перечисленных выше BI‑инструментов интерфейс MySQL в ClickHouse неявно выполняет SELECT‑запросы с настройкой prefer_column_name_to_alias = 1. Эту опцию нельзя отключить, и в редких пограничных случаях это может приводить к отличающемуся поведению между запросами, отправленными через обычный интерфейс ClickHouse и через MySQL‑интерфейс.
Включение интерфейса MySQL в ClickHouse Cloud
- После создания сервиса ClickHouse Cloud нажмите кнопку
Connect.

- В выпадающем списке
Connect withвыберитеMySQL.

- Переключите тумблер, чтобы включить интерфейс MySQL для этого сервиса. Для него будет открыт порт
3306, и отобразится экран подключения MySQL с вашим уникальным именем пользователя MySQL. Пароль будет таким же, как пароль пользователя по умолчанию для сервиса.

Скопируйте отображаемую строку подключения MySQL.

Создание нескольких пользователей MySQL в ClickHouse Cloud
По умолчанию существует встроенный пользователь mysql4<subdomain>, который использует тот же пароль, что и пользователь default. Часть <subdomain> — это первый сегмент имени хоста ClickHouse Cloud. Такой формат необходим для работы с инструментами, которые реализуют защищённое соединение, но не передают информацию SNI в своём TLS-рукопожатии, из‑за чего невозможно выполнить внутреннюю маршрутизацию без дополнительной подсказки в имени пользователя (консольный клиент MySQL — один из таких инструментов).
По этой причине мы настоятельно рекомендуем следовать формату mysql4<subdomain>_<username> при создании нового пользователя, предназначенного для работы с интерфейсом MySQL, где <subdomain> — это подсказка для идентификации вашего Cloud-сервиса, а <username> — произвольный суффикс по вашему выбору.
Для имени хоста ClickHouse Cloud вида foobar.us-east1.aws.clickhouse.cloud часть <subdomain> равна foobar, и настраиваемое имя пользователя MySQL может выглядеть как mysql4foobar_team1.
Вы можете создавать дополнительных пользователей для работы с интерфейсом MySQL, если, например, вам нужно применить дополнительные настройки.
-
Необязательно — создайте профиль настроек, который будет применяться к вашему пользовательскому пользователю. Например,
my_custom_profileс дополнительной настройкой, которая будет применяться по умолчанию при подключении с использованием пользователя, которого мы создадим позже:prefer_column_name_to_aliasиспользуется только в качестве примера, вы можете использовать там и другие настройки. -
Создайте пользователя, используя следующий формат:
mysql4<subdomain>_<username>(см. выше). Пароль должен быть в формате double SHA1. Например:или, если вы хотите использовать пользовательский профиль для этого пользователя:
где
my_custom_profile— имя профиля, который вы создали ранее. -
Предоставьте новому пользователю необходимые права доступа для работы с нужными таблицами или базами данных. Например, если вы хотите предоставить доступ только к
system.query_log: -
Используйте созданного пользователя для подключения к вашему сервису ClickHouse Cloud через интерфейс MySQL.
Устранение неполадок при работе с несколькими пользователями MySQL в ClickHouse Cloud
Если вы создали нового пользователя MySQL и при подключении через CLI‑клиент MySQL видите следующую ошибку:
В этом случае убедитесь, что имя пользователя соответствует формату mysql4<subdomain>_<username>, как описано (выше).
Включение интерфейса MySQL для самоуправляемого ClickHouse
Добавьте параметр mysql_port в конфигурационный файл сервера. Например, вы можете указать порт в новом XML-файле в каталоге config.d/ configuration files:
Запустите сервер ClickHouse и найдите в журнале сообщение, похожее на следующее, в котором присутствует строка Listening for MySQL compatibility protocol:
Подключение MySQL к ClickHouse
Следующая команда демонстрирует, как подключить клиент MySQL mysql к ClickHouse:
Например:
Вывод при успешном подключении:
Для совместимости со всеми клиентами MySQL рекомендуется указывать пароль пользователя в конфигурационном файле в виде двойного SHA1. Если пароль пользователя задан с использованием SHA256, некоторые клиенты не смогут пройти аутентификацию (mysqljs и старые версии консольных утилит MySQL и MariaDB).
Ограничения:
-
подготовленные запросы не поддерживаются
-
некоторые типы данных передаются в виде строк
Чтобы отменить длительный запрос, используйте оператор KILL QUERY connection_id (при выполнении он заменяется на KILL QUERY WHERE query_id = connection_id). Например: