Интерфейс 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> — это подсказка для идентификации вашего облачного сервиса, а <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— это имя профиля, созданного ранее. -
С помощью GRANT выдайте новому пользователю необходимые разрешения для работы с нужными таблицами или базами данных. Например, если вы хотите предоставить доступ только к
system.query_log: -
Используйте созданного пользователя для подключения к вашему сервису ClickHouse Cloud через интерфейс MySQL.
Устранение неполадок при работе с несколькими пользователями MySQL в ClickHouse Cloud
Если вы создали нового пользователя MySQL и видите следующую ошибку при подключении через консольный клиент MySQL (CLI):
В этом случае убедитесь, что имя пользователя имеет формат mysql4<subdomain>_<username>, как описано (выше).
Включение интерфейса MySQL в самостоятельно управляемом ClickHouse
Добавьте параметр mysql_port в файл конфигурации сервера. Например, вы можете указать порт в новом XML-файле в папке config.d/ folder:
Запустите сервер 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). Например: