Перейти к основному содержимому
Перейти к основному содержимому

Интерфейс MySQL

ClickHouse поддерживает wire-протокол 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. Эта настройка не может быть отключена, и в редких крайних случаях это может привести к различному поведению между запросами, отправляемыми в обычный и MySQL интерфейсы запросов ClickHouse.

Включение интерфейса MySQL в ClickHouse Cloud

  1. После создания вашей службы ClickHouse Cloud нажмите кнопку Connect.

  1. Измените выпадающее меню Connect with на MySQL.

  1. Переключите переключатель, чтобы включить интерфейс 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, если, например, вам нужно применить дополнительные настройки.

  1. Необязательно - создайте профиль настроек, который будет применен к вашему пользовательскому пользователю. Например, my_custom_profile с дополнительной настройкой, которая будет применяться по умолчанию, когда мы подключимся с пользователем, которого мы создадим позже:

    prefer_column_name_to_alias используется только как пример, вы можете использовать другие настройки.

  2. Создайте пользователя с использованием следующего формата: mysql4<subdomain>_<username> (см. выше). Пароль должен быть в формате double SHA1. Например:

    или если вы хотите использовать пользовательский профиль для этого пользователя:

    где my_custom_profile - это имя профиля, который вы создали ранее.

  3. Предоставьте новому пользователю необходимые разрешения для взаимодействия с нужными таблицами или базами данных. Например, если вы хотите предоставить доступ только к system.query_log:

  4. Используйте созданного пользователя, чтобы подключиться к вашей службе ClickHouse Cloud через интерфейс MySQL.

Устранение неисправностей нескольких пользователей MySQL в ClickHouse Cloud

Если вы создали нового пользователя MySQL, и вы видите следующую ошибку при подключении через клиент MySQL CLI:

В этом случае убедитесь, что имя пользователя соответствует формату mysql4<subdomain>_<username>, как описано (выше).

Включение интерфейса MySQL на самоуправляемом ClickHouse

Добавьте настройку mysql_port в файл конфигурации вашего сервера. Например, вы можете определить порт в новом XML файле в вашей папке config.d/ папке:

Запустите ваш сервер 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 во время выполнения). Например: