跳到主要内容
跳到主要内容

Tableau Online

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

ClickHouse Cloud 配置

选择 Connect your app

创建 ClickHouse Cloud 服务之后,在 Connect your app 页面中,从下拉菜单选择 MySQL。

ClickHouse Cloud 凭证页面,显示 MySQL 接口选择下拉框

启用 MySQL 接口

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

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

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

选择 Connect

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

ClickHouse Cloud 服务连接页面,其中 Connect 选项被高亮显示

选择 MySQL

Connect With 下拉菜单中选择 MySQL

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

启用 MySQL 接口

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

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

在 ClickHouse Cloud 中创建只读 MySQL 用户

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

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

提示

推荐的最佳实践是创建一个新的只读 MySQL 用户。

注意

对于像 foobar.us-east1.aws.clickhouse.cloud 这样的 ClickHouse Cloud 主机名,<subdomain> 部分等于 foobar,自定义 MySQL 用户名可以类似于 mysql4foobar_team1

创建只读设置配置文件

创建一个要应用到只读用户的设置配置文件, 将 readonly 设置为 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;
注意

对于只读用户,请确保只对你希望访问的表授予 SELECT 权限。

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

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

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

错误 2013 (HY000): 在"读取授权数据包"时与 MySQL 服务器失去连接,系统错误:54

在这种情况下,请确保用户名符合 mysql4<subdomain>_<username> 格式,具体说明见(上文)。

本地部署 ClickHouse 服务器安装与配置

请参阅官方文档,了解如何设置启用 MySQL 接口的 ClickHouse 服务器。

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

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

同时,还必须为将使用 MySQL 接口的用户使用 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 条目替换为你自己生成的双重 SHA1 哈希值。

另外,建议启用 use_mysql_types_in_show_columns, 以便在 SHOW [FULL] COLUMNS 查询结果中显示原生的 MySQL 类型,而不是 ClickHouse 类型, 从而在使用 MySQL 连接器时,让 BI 工具能够正确解析数据库模式(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>

或者将其分配给其他配置文件,而不是使用默认的配置文件。

如果你已经安装了 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 站点并添加一个新的 Published Data Source(已发布数据源)。

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 连接器,并按照在 Data Source 下拉框中选择 MySQL 时显示的安装指南进行配置,该指南位于此处。如果您使用的是 M1 Mac,请查看此故障排除帖 以获取驱动安装的替代方案。

将 Tableau Online 连接到 ClickHouse(云端或本地部署,使用 SSL)

由于无法在 Tableau Online 的 MySQL 连接设置向导中提供 SSL 证书, 唯一的方法是使用 Tableau Desktop 完成连接设置,然后将其发布到 Tableau Online。不过,这一过程其实非常简单。

在运行 Windows 或 macOS 的机器上启动 Tableau Desktop,然后选择 "Connect" -> "To a Server" -> "MySQL"。 通常,你需要先在本机安装 MySQL 驱动。 可以在 Data Source 下拉菜单中选择 MySQL 后,按照此处显示的设置指南进行安装。 如果你使用的是 M1 Mac,请查看这个故障排查帖,获取安装驱动的替代方案。

Tableau Desktop 界面,显示 Connect 菜单,其中 MySQL 选项被高亮

注意

在 MySQL 连接设置界面中,请确保启用了 "SSL" 选项。 ClickHouse Cloud 的 SSL 证书由 Let's Encrypt 签发。 你可以在这里下载该根证书。

填写你的 ClickHouse Cloud 实例的 MySQL 用户凭据,以及刚刚下载的根证书路径。

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 published data source"。

Tableau Desktop 发布对话框,已勾选 'Update workbook to use the published data source' 选项

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

已知限制(ClickHouse 23.11)

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