Интерфейс 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
используется здесь только в качестве примера, вы можете использовать другие настройки.
2. Создайте пользователя с использованием следующего формата: mysql4<subdomain>_<username>
(см. выше). Пароль должен быть в формате двойного SHA1. Например:
или, если вы хотите использовать пользовательский профиль для этого пользователя:
где my_custom_profile
- это имя профиля, который вы создали ранее.
3. Предоставьте новому пользователю необходимые разрешения для взаимодействия с нужными таблицами или базами данных. Например, если вы хотите предоставить доступ только к 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
в процессе). Например: