Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Tableau Online

Tableau Online 可以使用官方 MySQL 数据源,通过 MySQL 接口连接到 ClickHouse Cloud 或本地部署的 ClickHouse。

ClickHouse Cloud 配置

[object Object]

创建 ClickHouse Cloud 服务后,在 Connect your app 页面上,从下拉列表中选择 MySQL。

显示 MySQL 接口选择下拉列表的 ClickHouse Cloud 凭据页面

启用 MySQL 接口

切换开关,为此特定服务启用 MySQL 接口。 这会为该服务开放端口 3306,并显示 MySQL 连接页面,其中包含你专属的 MySQL 用户名。

ClickHouse Cloud MySQL 接口启用开关和连接详细信息

或者,如需为现有服务启用 MySQL 接口:

[object Object]

确保你的服务处于 Running 状态,然后点击你要为其启用 MySQL 接口的服务。 从左侧菜单中选择 “Connect”:

突出显示 Connect 选项的 ClickHouse Cloud 服务连接页面

[object Object]

Connect With 下拉列表中选择 MySQL

显示 MySQL 选项选择的 ClickHouse Cloud 连接页面

启用 MySQL 接口

切换开关,为此特定服务启用 MySQL 接口。 这会为该服务开放端口 3306,并显示 MySQL 连接页面,其中包含你专属的 MySQL 用户名。

已启用 MySQL 接口并显示连接详细信息的 ClickHouse Cloud 连接页面

在 ClickHouse Cloud 中创建只读 MySQL 用户

ClickHouse Cloud 会自动创建一个 mysql4<subdomain> 用户,该用户与默认用户使用相同的密码。 <subdomain> 部分对应你的 ClickHouse Cloud 主机名的第一部分。

这种用户名格式是为了兼容那些会建立安全连接、但在 TLS 握手中不包含 SNI (Server Name Indication) 数据的工具。 如果没有 SNI 信息,系统就无法进行正确的内部路由,因此嵌入用户名中的子域名提示会提供所需的路由信息。 MySQL 控制台客户端就是一个需要这种格式的工具示例。

创建只读 settings profile

创建一个要应用于只读用户的 settings profile, 将 readonly setting 设为 1

CREATE SETTINGS PROFILE readonly_profile SETTINGS readonly = 1

创建新的只读 MySQL 用户

创建用户,名称需遵循以下格式:

mysql4<subdomain>_<username>

readonly_profile 应用于新用户,并确保密码采用 double 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;

新创建的用户可用于通过 MySQL 接口连接到你的 ClickHouse Cloud 服务。

在 ClickHouse Cloud 中排查多个 MySQL 用户相关问题

如果您创建了一个新的 MySQL 用户,并在通过 MySQL CLI 客户端连接时看到以下错误:

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

在这种情况下,请确保用户名采用 mysql4<subdomain>_<username> 格式,如上文所述。

本地部署 ClickHouse 服务器设置

请参阅官方文档 了解如何配置启用 MySQL 接口的 ClickHouse server。

除了在服务器的 config.xml 中添加一项配置之外

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

对于将使用 MySQL interface 的用户,还必须使用 Double SHA1 密码加密

在 shell 中生成一个经 Double 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 项替换为你自己生成的 Double SHA1 哈希值。

此外,建议使用 use_mysql_types_in_show_columns 以便在 SHOW [FULL] COLUMNS 查询结果中显示 MySQL 原生类型,而不是 ClickHouse 类型, 这样 BI 工具在使用 MySQL 连接器时便能正确识别数据库 schema。

例如:

/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>

或者将其分配给其他 profile,而不是默认 profile。

如果你有可用的 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 Server,使其监听所需的 IP 地址。例如,在 config.xml 中,取消以下内容的注释,以监听所有地址:

<listen_host>::</listen_host> 

将 Tableau Online 连接到 ClickHouse (本地部署且不使用 SSL)

登录 Tableau Cloud 站点,并添加一个新的已发布数据源。

Tableau Online 界面,显示用于创建已发布数据源的“New”按钮

从可用连接器列表中选择“MySQL”。

Tableau Online 连接器选择界面,其中突出显示了 MySQL 选项

填写在设置 ClickHouse 时收集到的连接详细信息。

Tableau Online MySQL 连接配置界面,包含服务器、端口、数据库和凭据字段

Tableau Online 会自动识别数据库结构,并提供可用表列表。将所需的表拖到右侧画布上。此外,还可以点击“Update Now”预览数据,并进一步调整自动识别出的字段类型或名称。

Tableau Online 数据源页面,左侧显示数据库表,右侧显示支持拖放功能的画布

完成后,只需点击右上角的“Publish As”,即可像往常一样在 Tableau Online 中使用新创建的数据集。

注意:如果希望将 Tableau Online 与 Tableau Desktop 配合使用,并在两者之间共享 ClickHouse 数据集,请确保在 Tableau Desktop 中也使用默认的 MySQL 连接器,并按照从数据源下拉菜单中选择 MySQL 后 此处 显示的设置指南进行操作。如果使用的是 M1 Mac,请查看这篇故障排查讨论,了解驱动安装的替代方法。

将 Tableau Online 连接到 ClickHouse (Cloud 或本地部署,启用 SSL)

由于无法在 Tableau Online 的 MySQL 连接设置向导中提供 SSL 证书, 唯一的办法是先使用 Tableau Desktop 配置连接,再将其导出到 Tableau Online。不过,这个过程其实相当简单。

在 Windows 或 Mac 设备上运行 Tableau Desktop,然后依次选择 "Connect" -> "To a Server" -> "MySQL"。 通常,你需要先在本机安装 MySQL 驱动。 如果你在 Data Source 下拉菜单中选择 MySQL,即可按照这里显示的设置指南进行设置。 如果你使用的是 M1 Mac,请查看这个故障排查讨论串,了解安装 驱动 的替代方法。

Tableau Desktop 界面,显示 Connect 菜单,并高亮了 MySQL 选项

输入你的 ClickHouse Cloud 实例的 MySQL 用户 credentials,以及已下载根证书的 path。

Tableau Desktop MySQL 连接对话框,已启用 SSL 选项,并包含 server、username、password 和 certificate 字段

像平常一样选择所需的表 (与 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 已发布数据源"。

Tableau Desktop 发布对话框,已勾选“Update workbook to use the 已发布数据源”选项

最后,点击 "Publish",嵌入了 credentials 的数据源会自动在 Tableau Online 中打开。

已知限制 (ClickHouse 23.11)

所有已知限制均已在 ClickHouse 23.11 中修复。如果您遇到任何其他兼容性问题,请随时联系我们或提交一个新 issue

Navigation