Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Tableau Online

Tableau Online может подключаться к ClickHouse Cloud или к ClickHouse в собственной инфраструктуре через интерфейс MySQL, используя официальный источник данных MySQL.

Настройка ClickHouse Cloud

[object Object]

После создания сервиса ClickHouse Cloud на экране Connect your app выберите MySQL в раскрывающемся списке.

Экран учетных данных ClickHouse Cloud с раскрывающимся списком выбора интерфейса MySQL

Включите интерфейс MySQL

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

Переключатель включения интерфейса MySQL в ClickHouse Cloud и сведения о подключении

Также интерфейс MySQL можно включить для существующего сервиса:

[object Object]

Убедитесь, что сервис находится в состоянии Running, затем нажмите на сервис, для которого хотите включить интерфейс MySQL. В левом меню выберите "Connect":

Экран подключения сервиса ClickHouse Cloud с выделенной опцией Connect

[object Object]

Выберите MySQL в раскрывающемся списке Connect With.

Экран подключения ClickHouse Cloud с выбранной опцией MySQL

Включите интерфейс MySQL

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

Экран подключения ClickHouse Cloud с включенным интерфейсом MySQL и сведениями о подключении

Создание пользователя MySQL только для чтения в ClickHouse Cloud

ClickHouse Cloud автоматически создаёт пользователя mysql4<subdomain> с тем же паролем, что и у пользователя по умолчанию. Часть <subdomain> соответствует первой части hostname вашего сервиса ClickHouse Cloud.

Такой формат имени пользователя требуется для совместимости с инструментами, которые устанавливают защищённые соединения, но не передают данные SNI (Server Name Indication) при TLS-рукопожатии. Без информации SNI система не может выполнить корректную внутреннюю маршрутизацию, поэтому поддомен, встроенный в имя пользователя, служит необходимой подсказкой для маршрутизации. Пример такого инструмента — консольный клиент MySQL.

Создайте профиль настроек только для чтения

Создайте профиль настроек для пользователя только для чтения, установив параметр readonly в 1:

CREATE SETTINGS PROFILE readonly_profile SETTINGS readonly = 1

Создайте нового пользователя MySQL только для чтения

Создайте пользователя с именем в следующем формате:

mysql4<subdomain>_<username>

Примените readonly_profile к новому пользователю и убедитесь, что пароль указан в формате двойного хэша SHA1. Например:

CREATE USER mysql4foobar_readonly
IDENTIFIED WITH double_sha1_password BY 'YourPassword42$'
SETTINGS PROFILE 'readonly_profile';

Выдайте новому пользователю разрешения на доступ к нужным таблицам

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

GRANT SELECT ON system.query_log TO mysql4foobar_readonly;

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

Устранение неполадок при работе с несколькими пользователями MySQL в ClickHouse Cloud

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

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading authorization packet', system error: 54

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

Настройка сервера ClickHouse в собственной инфраструктуре

См. официальную документацию, где описано, как настроить сервер ClickHouse с включенным интерфейсом MySQL.

Помимо добавления записи в config.xml сервера

<clickhouse>
    <mysql_port>9004</mysql_port>
</clickhouse>

также обязательно использовать шифрование пароля двойным хэшом SHA1 для пользователя, который будет работать через интерфейс MySQL.

Генерация случайного пароля, зашифрованного двойным хэшом SHA1, в оболочке:

PASSWORD=$(base64 < /dev/urandom | head -c16); echo "$PASSWORD"; echo -n "$PASSWORD" | sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'

Результат должен выглядеть следующим образом:

LZOQYnqQN4L/T6L0
fbc958cc745a82188a51f30de69eebfc67c40ee4

Первая строка — это сгенерированный пароль, а вторая — хеш, который можно использовать для настройки ClickHouse.

Вот пример конфигурации для mysql_user, в которой используется сгенерированный хеш:

/etc/clickhouse-server/users.d/mysql_user.xml

<users>
    <mysql_user>
        <password_double_sha1_hex>fbc958cc745a82188a51f30de69eebfc67c40ee4</password_double_sha1_hex>
        <networks>
            <ip>::/0</ip>
        </networks>
        <profile>default</profile>
        <quota>default</quota>
    </mysql_user>
</users>

Замените значение password_double_sha1_hex на собственный сгенерированный двойной хэш SHA1.

Кроме того, рекомендуется использовать use_mysql_types_in_show_columns, чтобы в результатах запроса SHOW [FULL] COLUMNS отображались нативные типы MySQL вместо типов ClickHouse, что позволяет BI-инструментам корректно определять схему базы данных при использовании коннекторов MySQL.

Например:

/etc/clickhouse-server/users.d/mysql_user.xml

<profiles>
    <default>
        <use_mysql_types_in_show_columns>1</use_mysql_types_in_show_columns>
    </default>
</profiles>

или назначьте ему другой профиль вместо профиля по умолчанию.

Если у вас есть утилита mysql, вы можете проверить подключение из командной строки. Используя приведённые выше имя пользователя (mysql_user) и пароль (LZOQYnqQN4L/T6L0), команда будет такой:

mysql --protocol tcp -h localhost -u mysql_user -P 9004 --password=LZOQYnqQN4L/T6L0
mysql> show databases;
+--------------------+
| name               |
+--------------------+
| INFORMATION_SCHEMA |
| default            |
| information_schema |
| system             |
+--------------------+
4 rows in set (0.00 sec)
Read 4 rows, 603.00 B in 0.00156 sec., 2564 rows/sec., 377.48 KiB/sec.

Наконец, настройте сервер ClickHouse так, чтобы он принимал подключения на нужных IP-адресах. Например, в config.xml раскомментируйте следующее, чтобы он принимал подключения на всех адресах:

<listen_host>::</listen_host> 

Подключение Tableau Online к ClickHouse (в собственной инфраструктуре без SSL)

Войдите на свой сайт Tableau Cloud и добавьте новый Published Data Source.

Интерфейс Tableau Online с кнопкой 'New' для создания опубликованного источника данных

Выберите "MySQL" из списка доступных коннекторов.

Экран выбора коннектора в Tableau Online с выделенным вариантом MySQL

Укажите сведения о подключении, полученные при настройке ClickHouse.

Экран настройки подключения MySQL в Tableau Online с полями сервера, порта, базы данных и учетных данных

Tableau Online проанализирует структуру базы данных и покажет список доступных таблиц. Перетащите нужную таблицу на холст справа. Кроме того, можно нажать "Update Now", чтобы просмотреть данные, а также при необходимости скорректировать определённые системой типы или имена полей.

Страница источника данных в Tableau Online с таблицами базы данных слева и холстом справа с поддержкой drag-and-drop

После этого останется только нажать "Publish As" в правом верхнем углу, и вы сможете использовать новый датасет в Tableau Online как обычно.

Примечание: если вы хотите использовать Tableau Online вместе с Tableau Desktop и использовать датасеты ClickHouse в обоих продуктах, убедитесь, что в Tableau Desktop вы тоже используете стандартный коннектор MySQL, следуя руководству по настройке, которое отображается здесь, если выбрать MySQL в раскрывающемся списке Data Source. Если у вас Mac с M1, ознакомьтесь с этой веткой по устранению неполадок, где описан обходной способ установки драйвера.

Подключение Tableau Online к ClickHouse (настройка в Cloud или в собственной инфраструктуре с SSL)

Поскольку передать SSL-сертификаты через мастер настройки MySQL-подключения в Tableau Online невозможно, единственный вариант — настроить подключение в Tableau Desktop, а затем экспортировать его в Tableau Online. При этом сам процесс довольно простой.

Запустите Tableau Desktop на компьютере с Windows или Mac и выберите "Connect" -> "To a Server" -> "MySQL". Скорее всего, сначала потребуется установить драйвер MySQL. Это можно сделать, следуя руководству по настройке, доступному здесь, если выбрать MySQL в раскрывающемся списке Data Source. Если у вас Mac с M1, воспользуйтесь этой веткой с устранением неполадок, чтобы обойти проблему с установкой драйвера.

Интерфейс Tableau Desktop с меню Connect, где выделен вариант MySQL

Укажите учетные данные MySQL-пользователя вашего экземпляра ClickHouse Cloud и путь к скачанному корневому сертификату.

Диалог подключения MySQL в Tableau Desktop с включенной опцией SSL и полями для сервера, имени пользователя, пароля и сертификата

Выберите нужные таблицы, как обычно (так же, как в Tableau Online), и выберите "Server" -> "Publish Data Source" -> Tableau Cloud.

Tableau Desktop с меню Server, где выделен параметр Publish Data Source

ВАЖНО: в параметрах "Authentication" нужно выбрать "Embedded password".

Диалог публикации Tableau Desktop, где в параметрах Authentication выбран вариант Embedded password

Кроме того, выберите "Update workbook to use the published data source".

Диалог публикации Tableau Desktop с отмеченной опцией 'Update workbook to use the published data source'

Наконец, нажмите "Publish", и ваш источник данных со встроенными учетными данными автоматически откроется в Tableau Online.

Известные ограничения (ClickHouse 23.11)

Все известные ограничения были устранены в ClickHouse 23.11. Если вы столкнётесь с какими-либо другими несовместимостями, пожалуйста, свяжитесь с нами или создайте новый issue.

Navigation