Интерфейс MySQL
ClickHouse поддерживает протокол передачи MySQL. Это позволяет определенным клиентам, у которых нет родных соединителей ClickHouse, использовать протокол MySQL, и он был протестирован с рядом инструментов бизнес-аналитики (BI):
Если вы пробуете другие непроверенные клиенты или интеграции, имейте в виду, что могут быть следующие ограничения:
- Реализация SSL может быть несовместима; могут возникнуть потенциальные проблемы с TLS SNI.
- Определенный инструмент может требовать специфические функции диалекта (например, функции или настройки, специфичные для MySQL), которые еще не реализованы.
Если есть доступный родной драйвер (например, DBeaver), всегда предпочтительнее использовать его вместо интерфейса MySQL. Кроме того, хотя большинство клиентов на языке MySQL должны работать без проблем, интерфейс MySQL не гарантирует замену кода с существующими запросами MySQL.
Если ваш случай использования касается определенного инструмента, у которого нет родного драйвера ClickHouse, и вы хотите использовать его через интерфейс MySQL и сталкиваетесь с определенными несовместимостями - пожалуйста, создайте проблему в репозитории 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>
(см. выше). Пароль должен быть в формате двойного SHA1. Например:или если вы хотите использовать пользовательский профиль для этого пользователя:
где
my_custom_profile
- это имя профиля, который вы создали ранее. -
Предоставьте новому пользователю необходимые разрешения для взаимодействия с нужными таблицами или базами данных. Например, если вы хотите предоставить доступ только к
system.query_log
: -
Используйте созданного пользователя для подключения к вашему сервису ClickHouse Cloud через интерфейс MySQL.
Устранение неполадок с несколькими пользователями MySQL в ClickHouse Cloud
Если вы создали нового пользователя MySQL и видите следующую ошибку при подключении через клиент MySQL CLI:
В этом случае убедитесь, что имя пользователя соответствует формату mysql4<subdomain>_<username>
, как описано (выше).
Включение интерфейса MySQL в самоуправляемом ClickHouse
Добавьте настройку mysql_port в файл конфигурации вашего сервера. Например, вы можете определить порт в новом XML файле в вашей папке config.d/
папке:
Запустите сервер ClickHouse и ищите сообщение в логах, аналогичное следующему, которое упоминает прослушивание протокола совместимости MySQL:
Подключение MySQL к ClickHouse
Следующая команда демонстрирует, как подключить клиент MySQL mysql
к ClickHouse:
Например:
Вывод, если соединение установлено успешно:
Для совместимости со всеми клиентами MySQL рекомендуется указывать пароль пользователя с помощью двойного SHA1 в файле конфигурации. Если пароль пользователя указан с использованием SHA256, некоторые клиенты не смогут пройти аутентификацию (mysqljs и старые версии командной строки MySQL и MariaDB).
Ограничения:
-
подготовленные запросы не поддерживаются
-
некоторые типы данных отправляются как строки
Чтобы отменить длинный запрос используйте команду KILL QUERY connection_id
(она заменена на KILL QUERY WHERE query_id = connection_id
во время выполнения). Например: