Looker Studio
Looker Studioは、公式のGoogle MySQLデータソースを使用して、MySQLインターフェース経由でClickHouseに接続できます。
ClickHouse Cloudのセットアップ
- ClickHouse Cloud Serviceを作成した後、認証情報画面でMySQLタブを選択します。
- この特定のサービスに対してMySQLインターフェースを有効にするためにスイッチを切り替えます。これにより、そのサービスでポート
3306
が公開され、ユニークなMySQLユーザー名を含むMySQL接続画面が表示されます。パスワードはサービスのデフォルトユーザーのパスワードと同じになります。
代わりに、既存のサービスに対してMySQLインターフェースを有効にするには: - サービスが
Running
状態であることを確認し、MySQLインターフェースを有効にするサービスの「接続文字列を表示」ボタンをクリックします。 - この特定のサービスに対してMySQLインターフェースを有効にするためにスイッチを切り替えます。これにより、デフォルトのパスワードを入力するよう求められます。
- パスワードを入力すると、このサービスのMySQL接続文字列が表示されます。
ClickHouse Cloudで複数のMySQLユーザーを作成する
デフォルトでは、mysql4<subdomain>
という組み込みユーザーがあり、これはdefault
ユーザーと同じパスワードを使用します。<subdomain>
部分はあなたのClickHouse Cloudホスト名の最初のセグメントです。このフォーマットは、安全な接続を実装しているがTLSハンドシェイクでSNI情報を提供しないツール(MySQLコンソールクライアントがその一例)で作業するために必要です。この場合、ユーザー名に追加のヒントを含めずには内部ルーティングを行うことができません。
これにより、MySQLインターフェースで使用する新しいユーザーを作成する際には、mysql4<subdomain>_<username>
のフォーマットを使用することを強くお勧めします。ここで、<subdomain>
はあなたのCloudサービスを識別するためのヒントであり、<username>
は選択した任意のサフィックスです。
ClickHouse Cloudホスト名がfoobar.us-east1.aws.clickhouse.cloud
の場合、<subdomain>
部分はfoobar
に相当し、カスタムMySQLユーザー名はmysql4foobar_team1
のようになります。
MySQLインターフェースを使用するために追加のユーザーを作成することができます。例えば、追加の設定を適用する必要がある場合などです。
オプション - カスタムユーザーに適用する設定プロフィールを作成します。たとえば、後で作成するユーザーで接続するときにデフォルトで適用される追加設定を持つ
my_custom_profile
:CREATE SETTINGS PROFILE my_custom_profile SETTINGS prefer_column_name_to_alias=1;
prefer_column_name_to_alias
は単なる例として使用されます。ここに他の設定を使用することもできます。以下のフォーマットを使用してユーザーを作成します:
mysql4<subdomain>_<username>
(上記参照)。パスワードはダブルSHA1形式である必要があります。例:CREATE USER mysql4foobar_team1 IDENTIFIED WITH double_sha1_password BY 'YourPassword42$';
または、このユーザーにカスタムプロフィールを使用したい場合:
CREATE USER mysql4foobar_team1 IDENTIFIED WITH double_sha1_password BY 'YourPassword42$' SETTINGS PROFILE 'my_custom_profile';
ここで、
my_custom_profile
は前に作成したプロフィールの名前です。新しいユーザーに必要なアクセス権を付与して、目的のテーブルまたはデータベースと対話できるようにします。権限を付与する例として、たとえば
system.query_log
のみのアクセスを付与したい場合:GRANT SELECT ON system.query_log TO mysql4foobar_team1;
作成したユーザーを使用して、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サーバーのセットアップ
ClickHouseサーバーにMySQLインターフェースを有効にする方法については公式ドキュメントを参照してください。
サーバーの config.xml
にエントリを追加することに加えて、
<clickhouse>
<mysql_port>9004</mysql_port>
</clickhouse>
MySQLインターフェースを利用するユーザーには、二重SHA1パスワード暗号化を使用することが必要です。
シェルから二重SHA1で暗号化されたランダムパスワードを生成するには以下を実行してください:
PASSWORD=$(base64 < /dev/urandom | head -c16); echo "$PASSWORD"; echo -n "$PASSWORD" | sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
出力は以下のようになります:
LZOQYnqQN4L/T6L0
fbc958cc745a82188a51f30de69eebfc67c40ee4
最初の行は生成されたパスワードで、2行目は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ハッシュに置き換えてください。
さらに、BIツールがMySQLコネクタを使用する際にデータベーススキーマを適切に調査できるように、SHOW [FULL] COLUMNS
クエリの結果でMySQLネイティブタイプを表示するために、use_mysql_types_in_show_columns
を使用することを推奨します。
例えば:
/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行取得しました (0.00 sec)
4行読み込み、603.00 B、0.00156秒で、2564行/秒、377.48 KiB/秒
最後に、ClickHouseサーバーを希望するIPアドレスでリッスンするように設定します。例えば、config.xml
の中で、すべてのアドレスでリッスンするために以下をアンコメントしてください:
<listen_host>::</listen_host>
Looker StudioをClickHouseに接続する
まず、https://lookerstudio.google.com にGoogleアカウントでログインし、新しいデータソースを作成します。

Googleが提供する公式のMySQLコネクタ(名称は単にMySQL)を検索します。

接続の詳細を指定します。MySQLインターフェースのポートはデフォルトで9004で、サーバーの設定によって異なる場合があります。

次に、ClickHouseからデータを取得する方法を2つ選ぶことができます。まず、テーブルブラウザ機能を使用することができます。

または、カスタムクエリを指定してデータを取得することもできます。

最後に、イントロスペクトされたテーブル構造を確認し、必要に応じてデータ型を調整できます。

これで、データの探査や新しいレポートの作成を進めることができます!
ClickHouse CloudでLooker Studioを使用する
ClickHouse Cloudを使用する場合、最初にMySQLインターフェースを有効にする必要があります。接続ダイアログの「MySQL」タブでそれを行うことができます。

Looker StudioのUIで「SSLを有効にする」オプションを選択します。ClickHouse CloudのSSL証明書はLet's Encryptにより署名されています。このルート証明書をこちらからダウンロードできます。

その後の手順は、前述のセクションに記載されている手順と同じです。