> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> Tableau Online 汇聚数据的力量，让用户无论身在何处都能更高效、更自信地做出决策。

# Tableau Online

export const Image = ({img, alt, size = "lg"}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} />
      </Frame>
    </div>;
};

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

<div id="clickhouse-cloud-setup">
  ## ClickHouse Cloud 配置
</div>

<Steps>
  <Step title={<>选择 <code>Connect your app</code></>} id="select-connect-your-app">
    创建 ClickHouse Cloud 服务后，在 `Connect your app` 页面上，从下拉列表中选择 MySQL。

    <Frame>
      <img src="https://mintcdn.com/private-7c7dfe99/CFFsa2agBPbviR4r/images/_snippets/mysql1.webp?fit=max&auto=format&n=CFFsa2agBPbviR4r&q=85&s=3fee8b16269b6d6db4be00c671931dc6" alt="显示 MySQL 接口选择下拉列表的 ClickHouse Cloud 凭据页面" width="3840" height="2138" data-path="images/_snippets/mysql1.webp" />
    </Frame>
  </Step>

  <Step title="启用 MySQL 接口" id="enable-mysql-interface">
    切换开关，为此特定服务启用 MySQL 接口。
    这会为该服务开放端口 `3306`，并显示 MySQL 连接页面，其中包含你专属的 MySQL 用户名。

    <Frame>
      <img src="https://mintcdn.com/private-7c7dfe99/CFFsa2agBPbviR4r/images/_snippets/mysql2.webp?fit=max&auto=format&n=CFFsa2agBPbviR4r&q=85&s=1f1065226a43c32aee2f841823e97fa7" alt="ClickHouse Cloud MySQL 接口启用开关和连接详细信息" width="3840" height="2136" data-path="images/_snippets/mysql2.webp" />
    </Frame>

    或者，如需为现有服务启用 MySQL 接口：
  </Step>

  <Step title={<>选择 <code>Connect</code></>} id="select-connect">
    确保你的服务处于 `Running` 状态，然后点击你要为其启用 MySQL 接口的服务。
    从左侧菜单中选择 “Connect”：

    <Frame>
      <img src="https://mintcdn.com/private-7c7dfe99/CFFsa2agBPbviR4r/images/_snippets/mysql3.webp?fit=max&auto=format&n=CFFsa2agBPbviR4r&q=85&s=563cda780487040d6da61f40bb612113" alt="突出显示 Connect 选项的 ClickHouse Cloud 服务连接页面" width="3840" height="2160" data-path="images/_snippets/mysql3.webp" />
    </Frame>
  </Step>

  <Step title={<>选择 <code>MySQL</code></>} id="choose-mysql">
    从 `Connect With` 下拉列表中选择 `MySQL`。

    <div className="ch-image-md">
      <Frame>
        <img src="https://mintcdn.com/private-7c7dfe99/CFFsa2agBPbviR4r/images/_snippets/mysql4.webp?fit=max&auto=format&n=CFFsa2agBPbviR4r&q=85&s=7e7d9febe22e2d83b4edf27a3f1546ab" alt="显示 MySQL 选项选择的 ClickHouse Cloud 连接页面" width="1326" height="1046" data-path="images/_snippets/mysql4.webp" />
      </Frame>
    </div>
  </Step>

  <Step title="启用 MySQL 接口" id="enable-mysql-interface-existing-service">
    切换开关，为此特定服务启用 MySQL 接口。
    这会为该服务开放端口 `3306`，并显示 MySQL 连接页面，其中包含你专属的 MySQL 用户名。
  </Step>
</Steps>

<div className="ch-image-md">
  <Frame>
    <img src="https://mintcdn.com/private-7c7dfe99/CFFsa2agBPbviR4r/images/_snippets/mysql5.webp?fit=max&auto=format&n=CFFsa2agBPbviR4r&q=85&s=fe4db63a9a94f057aa6b57a2be5366a4" alt="已启用 MySQL 接口并显示连接详细信息的 ClickHouse Cloud 连接页面" width="1320" height="1520" data-path="images/_snippets/mysql5.webp" />
  </Frame>
</div>

<div id="creating-multiple-mysql-users-in-clickhouse-cloud">
  ## 在 ClickHouse Cloud 中创建只读 MySQL 用户
</div>

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

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

<Tip>
  建议的最佳实践是新建一个只读 MySQL 用户。
</Tip>

<Note>
  对于 `foobar.us-east1.aws.clickhouse.cloud` 这样的 ClickHouse Cloud 主机名，`<subdomain>` 部分就是 `foobar`，自定义 MySQL 用户名可以是 `mysql4foobar_team1` 这样的形式。
</Note>

<Steps>
  <Step title="创建只读 settings profile" id="create-a-custom-settings-user">
    创建一个要应用于只读用户的 [settings profile](/docs/zh/reference/statements/create/settings-profile)，
    将 `readonly` setting 设为 `1`：

    ```sql theme={null}
    CREATE SETTINGS PROFILE readonly_profile SETTINGS readonly = 1
    ```
  </Step>

  <Step title="创建新的只读 MySQL 用户" id="create-a-readonly-mysql-user">
    [创建用户](/docs/zh/reference/statements/create/user)，名称需遵循以下格式：

    ```sql theme={null}
    mysql4<subdomain>_<username>
    ```

    将 `readonly_profile` 应用于新用户，并确保密码采用 double SHA1 格式。例如：

    ```sql theme={null}
    CREATE USER mysql4foobar_readonly
    IDENTIFIED WITH double_sha1_password BY 'YourPassword42$'
    SETTINGS PROFILE 'readonly_profile';
    ```
  </Step>

  <Step title="授予新用户访问所需表的权限" id="grant-the-new-user-the-necessary-permissions">
    向新用户 [授予](/docs/zh/reference/statements/grant) 访问目标表或数据库所需的权限。
    例如，如果你只想授予对 `system.query_log` 的访问权限：

    ```sql theme={null}
    GRANT SELECT ON system.query_log TO mysql4foobar_readonly;
    ```

    <Note>
      对于只读用户，请确保只向需要访问的表授予 `SELECT` 权限。
    </Note>

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

<div id="troubleshooting-multiple-mysql-users-in-clickhouse-cloud">
  ### 在 ClickHouse Cloud 中排查多个 MySQL 用户相关问题
</div>

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

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

在这种情况下，请确保用户名采用 `mysql4<subdomain>_<username>` 格式，如[上文](#creating-multiple-mysql-users-in-clickhouse-cloud)所述。

<div id="on-premise-clickhouse-server-setup">
  ## 本地部署 ClickHouse 服务器设置
</div>

请参阅[官方文档](/docs/zh/concepts/features/interfaces/mysql)
了解如何配置启用 MySQL 接口的 ClickHouse server。

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

```xml theme={null}
<clickhouse>
    <mysql_port>9004</mysql_port>
</clickhouse>
```

对于将使用 MySQL interface 的用户，还*必须*使用
[Double SHA1 密码加密](/docs/zh/concepts/features/configuration/settings/settings-users#user-namepassword)。

在 shell 中生成一个经 Double SHA1 加密的随机密码：

```shell theme={null}
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`

```xml theme={null}
<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`

```xml theme={null}
<profiles>
    <default>
        <use_mysql_types_in_show_columns>1</use_mysql_types_in_show_columns>
    </default>
</profiles>
```

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

如果你有可用的 `mysql` 可执行文件，就可以通过命令行测试连接。
使用上面的示例用户名 (`mysql_user`) 和密码 (`LZOQYnqQN4L/T6L0`) ，命令行如下所示：

```bash theme={null}
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` 中，取消以下内容的注释，以监听所有地址：

```bash theme={null}
<listen_host>::</listen_host> 
```

<div id="connecting-tableau-online-to-clickhouse-on-premise-without-ssl">
  ## 将 Tableau Online 连接到 ClickHouse (本地部署且不使用 SSL)
</div>

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

<Image size="md" img="https://mintcdn.com/private-7c7dfe99/etDiFo_9fGSe5rMN/images/integrations/data-visualization/tableau_online_01.webp?fit=max&auto=format&n=etDiFo_9fGSe5rMN&q=85&s=80282e8972fac8925c8e86928f443ff7" alt="Tableau Online 界面，显示用于创建已发布数据源的“New”按钮" border width="1627" height="1024" data-path="images/integrations/data-visualization/tableau_online_01.webp" />

<br />

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

<Image size="md" img="https://mintcdn.com/private-7c7dfe99/etDiFo_9fGSe5rMN/images/integrations/data-visualization/tableau_online_02.webp?fit=max&auto=format&n=etDiFo_9fGSe5rMN&q=85&s=52b155274958a00c95e7ad65c5dc9742" alt="Tableau Online 连接器选择界面，其中突出显示了 MySQL 选项" border width="1940" height="1114" data-path="images/integrations/data-visualization/tableau_online_02.webp" />

<br />

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

<Image size="md" img="https://mintcdn.com/private-7c7dfe99/etDiFo_9fGSe5rMN/images/integrations/data-visualization/tableau_online_03.webp?fit=max&auto=format&n=etDiFo_9fGSe5rMN&q=85&s=f2dbefab54d05ca84bb59258a5d53de4" alt="Tableau Online MySQL 连接配置界面，包含服务器、端口、数据库和凭据字段" border width="1940" height="1114" data-path="images/integrations/data-visualization/tableau_online_03.webp" />

<br />

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

<Image size="md" img="https://mintcdn.com/private-7c7dfe99/etDiFo_9fGSe5rMN/images/integrations/data-visualization/tableau_online_04.webp?fit=max&auto=format&n=etDiFo_9fGSe5rMN&q=85&s=4e8a65ae2ac8e97052ac2f3ca9f087cc" alt="Tableau Online 数据源页面，左侧显示数据库表，右侧显示支持拖放功能的画布" border width="2277" height="1395" data-path="images/integrations/data-visualization/tableau_online_04.webp" />

<br />

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

注意：如果希望将 Tableau Online 与 Tableau Desktop 配合使用，并在两者之间共享 ClickHouse 数据集，请确保在 Tableau Desktop 中也使用默认的 MySQL 连接器，并按照从数据源下拉菜单中选择 MySQL 后 [此处](https://www.tableau.com/support/drivers) 显示的设置指南进行操作。如果使用的是 M1 Mac，请查看[这篇故障排查讨论](https://community.tableau.com/s/question/0D58b0000Ar6OhvCQE/unable-to-install-mysql-driver-for-m1-mac)，了解驱动安装的替代方法。

<div id="connecting-tableau-online-to-clickhouse-cloud-or-on-premise-setup-with-ssl">
  ## 将 Tableau Online 连接到 ClickHouse (Cloud 或本地部署，启用 SSL)
</div>

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

在 Windows 或 Mac 设备上运行 Tableau Desktop，然后依次选择 "Connect" -> "To a Server" -> "MySQL"。
通常，你需要先在本机安装 MySQL 驱动。
如果你在 Data Source 下拉菜单中选择 MySQL，即可按照[这里](https://www.tableau.com/support/drivers)显示的设置指南进行设置。
如果你使用的是 M1 Mac，请查看[这个故障排查讨论串](https://community.tableau.com/s/question/0D58b0000Ar6OhvCQE/unable-to-install-mysql-driver-for-m1-mac)，了解安装 驱动 的替代方法。

<Image size="md" img="https://mintcdn.com/private-7c7dfe99/etDiFo_9fGSe5rMN/images/integrations/data-visualization/tableau_desktop_01.webp?fit=max&auto=format&n=etDiFo_9fGSe5rMN&q=85&s=7481c985675755865ed9cfbff72b658d" alt="Tableau Desktop 界面，显示 Connect 菜单，并高亮了 MySQL 选项" border width="735" height="659" data-path="images/integrations/data-visualization/tableau_desktop_01.webp" />

<br />

<Note>
  在 MySQL 连接设置 UI 中，请确保已启用 "SSL" 选项。
  ClickHouse Cloud 的 SSL 证书由 [Let's Encrypt](https://letsencrypt.org/certificates/) 签发。
  你可以在[这里](https://letsencrypt.org/certs/isrgrootx1.pem)下载该根证书。
</Note>

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

<Image size="sm" img="https://mintcdn.com/private-7c7dfe99/etDiFo_9fGSe5rMN/images/integrations/data-visualization/tableau_desktop_02.webp?fit=max&auto=format&n=etDiFo_9fGSe5rMN&q=85&s=b184ffe5c897400fb243499c2e073a4b" alt="Tableau Desktop MySQL 连接对话框，已启用 SSL 选项，并包含 server、username、password 和 certificate 字段" border width="496" height="567" data-path="images/integrations/data-visualization/tableau_desktop_02.webp" />

<br />

像平常一样选择所需的表 (与 Tableau Online 中的操作类似) ，
然后依次选择 "Server" -> "Publish Data Source" -> Tableau Cloud。

<Image size="md" img="https://mintcdn.com/private-7c7dfe99/etDiFo_9fGSe5rMN/images/integrations/data-visualization/tableau_desktop_03.webp?fit=max&auto=format&n=etDiFo_9fGSe5rMN&q=85&s=4b3003df50b1fdf42a6361551bbc1146" alt="Tableau Desktop 显示 Server 菜单，并高亮了 Publish Data Source 选项" border width="813" height="321" data-path="images/integrations/data-visualization/tableau_desktop_03.webp" />

<br />

重要提示：你需要在 "Authentication" 选项中选择 "Embedded password"。

<Image size="md" img="https://mintcdn.com/private-7c7dfe99/etDiFo_9fGSe5rMN/images/integrations/data-visualization/tableau_desktop_04.webp?fit=max&auto=format&n=etDiFo_9fGSe5rMN&q=85&s=65784dddca1098e0c020249d971bbbdd" alt="Tableau Desktop 发布对话框，显示 Authentication 选项，并已选择 Embedded password" border width="775" height="643" data-path="images/integrations/data-visualization/tableau_desktop_04.webp" />

<br />

此外，选择 "Update workbook to use the 已发布数据源"。

<Image size="sm" img="https://mintcdn.com/private-7c7dfe99/etDiFo_9fGSe5rMN/images/integrations/data-visualization/tableau_desktop_05.webp?fit=max&auto=format&n=etDiFo_9fGSe5rMN&q=85&s=6f889cbb8c8ec6e20a6d078a65513b47" alt="Tableau Desktop 发布对话框，已勾选“Update workbook to use the 已发布数据源”选项" border width="373" height="649" data-path="images/integrations/data-visualization/tableau_desktop_05.webp" />

<br />

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

<div id="known-limitations-clickhouse-2311">
  ## 已知限制 (ClickHouse 23.11)
</div>

所有已知限制均已在 ClickHouse `23.11` 中修复。如果您遇到任何其他兼容性问题，请随时[联系我们](https://clickhouse.com/company/contact)或提交一个[新 issue](https://github.com/ClickHouse/ClickHouse/issues)。
