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 нажмите кнопку
Подключиться
.

- Измените выпадающее меню
Подключиться с
наMySQL
.

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

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

Создание нескольких пользователей MySQL в ClickHouse Cloud
По умолчанию есть встроенный пользователь mysql4<поддомен>
, который использует тот же пароль, что и default
. Часть <поддомен>
- это первый сегмент имени хоста вашего ClickHouse Cloud. Этот формат необходим для работы с инструментами, которые реализуют безопасное соединение, но не предоставляют информацию SNI в своем TLS рукопожатии, что делает невозможным внутреннюю маршрутизацию без дополнительного указания в имени пользователя (консольный клиент MySQL - один из таких инструментов).
Из-за этого мы настоятельно рекомендуем следовать формату mysql4<поддомен>_<имя_пользователя>
при создании нового пользователя, предназначенного для использования с MySQL интерфейсом, где <поддомен>
является указанием для идентификации вашего облачного сервиса, а <имя_пользователя>
является произвольным суффиксом по вашему выбору.
Для имени хоста ClickHouse Cloud, такого как foobar.us-east1.aws.clickhouse.cloud
, часть <поддомен>
равна foobar
, и пользователь MySQL может выглядеть как mysql4foobar_team1
.
Вы можете создать дополнительных пользователей для использования с MySQL интерфейсом, если, например, вам нужно применить дополнительные настройки.
-
Опционально - создайте профиль настроек для применения к вашему пользовательскому пользователю. Например,
my_custom_profile
с дополнительной настройкой, которая будет действовать по умолчанию, когда мы подключимся с пользователем, которого создадим позже:prefer_column_name_to_alias
используется только в качестве примера, вы можете использовать другие настройки. -
Создайте пользователя с использованием следующего формата:
mysql4<поддомен>_<имя_пользователя>
(см. выше). Пароль должен быть в двойном формате SHA1. Например:или если вы хотите использовать пользовательский профиль для этого пользователя:
где
my_custom_profile
- это название профиля, который вы создали ранее. -
Предоставьте новому пользователю необходимые разрешения для работы с желаемыми таблицами или базами данных. Например, если вы хотите предоставить доступ только к
system.query_log
: -
Используйте созданного пользователя для подключения к вашему сервису ClickHouse Cloud с помощью MySQL интерфейса.
Устранение проблем с несколькими пользователями MySQL в ClickHouse Cloud
Если вы создали нового пользователя MySQL и видите следующую ошибку при подключении через клиент MySQL CLI:
В этом случае убедитесь, что имя пользователя соответствует формату mysql4<поддомен>_<имя_пользователя>
, как описано (выше).
Включение 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
во время выполнения). Например: