MySQL インターフェイス
ClickHouse は MySQL ワイヤープロトコルをサポートしています。これにより、ネイティブな ClickHouse コネクタを持たない一部のクライアントでも MySQL プロトコルを代わりに利用でき、次の BI ツールで動作検証が行われています:
他の未検証のクライアントやインテグレーションを試す場合は、次のような制限があり得ることに留意してください:
- SSL 実装が完全には互換でない可能性があり、TLS SNI に関連する問題が発生する場合があります。
- 特定のツールが、まだ実装されていない方言機能(例: MySQL 固有の関数や設定)を必要とする可能性があります。
ネイティブドライバが利用可能な場合(例: DBeaver)は、MySQL インターフェイスではなく、常にネイティブドライバを使用することを推奨します。さらに、ほとんどの MySQL 言語クライアントは問題なく動作するはずですが、MySQL インターフェイスが既存の MySQL クエリを持つコードベースに対するドロップインの代替となることは保証されません。
特定のツールにネイティブな ClickHouse ドライバがなく、MySQL インターフェイス経由で利用したいものの、何らかの非互換性を見つけた場合は、ClickHouse リポジトリでIssue を作成してください。
上記の BI ツールの SQL 方言をより適切にサポートするため、ClickHouse の MySQL インターフェイスは、設定 prefer_column_name_to_alias = 1 を有効にした状態で SELECT クエリを暗黙的に実行します。 この設定は無効化できず、まれなエッジケースでは、ClickHouse の通常のクエリインターフェイスと MySQL クエリインターフェイスに送信されたクエリの間で挙動が異なる原因となる場合があります。
ClickHouse Cloud での MySQL インターフェイスの有効化
- ClickHouse Cloud サービスを作成したら、
Connectボタンをクリックします。

Connect withのドロップダウンをMySQLに変更します。

- このサービスで MySQL インターフェイスを有効にするためにスイッチをオンにします。これにより、このサービスでポート
3306が公開され、一意の MySQL ユーザー名を含む MySQL 接続画面が表示されます。パスワードはサービスのデフォルトユーザーのパスワードと同一です。

表示されている MySQL 接続文字列をコピーします。

ClickHouse Cloud で複数の MySQL ユーザーを作成する
デフォルトでは、組み込みの mysql4<subdomain> ユーザーが存在し、このユーザーは default ユーザーと同じパスワードを使用します。<subdomain> 部分は、ClickHouse Cloud ホスト名の先頭のセグメントです。この形式は、安全な接続を実装しているものの TLS ハンドシェイクで SNI 情報を提供しない ツールと連携するために必要であり、ユーザー名に追加のヒントがないと内部ルーティングができないためです(MySQL コンソールクライアントはそのようなツールの一例です)。
このため、MySQL インターフェイスで使用する新しいユーザーを作成する際は、mysql4<subdomain>_<username> という形式に従うことを強く推奨します。ここで、<subdomain> は Cloud サービスを識別するためのヒントであり、<username> は任意のサフィックスです。
foobar.us-east1.aws.clickhouse.cloud のような ClickHouse Cloud ホスト名の場合、<subdomain> 部分は foobar に相当し、カスタム MySQL ユーザー名は mysql4foobar_team1 のようになります。
たとえば、追加の設定を適用する必要がある場合などに、MySQL インターフェイスで使用する追加ユーザーを作成できます。
-
(任意)カスタムユーザーに適用する settings profile を作成します。たとえば、後で作成するユーザーで接続した際にデフォルトで適用される追加設定を持つ
my_custom_profileを作成します:prefer_column_name_to_aliasはあくまで例であり、ここには他の設定を指定できます。 -
次の形式で ユーザーを作成 します:
mysql4<subdomain>_<username>(前述 参照)。パスワードは double SHA1 形式である必要があります。例:または、このユーザーに対してカスタムプロファイルを使用したい場合:
ここで、
my_custom_profileは先ほど作成したプロファイル名です。 -
新しいユーザーに対して、対象とするテーブルやデータベースとやり取りするために必要な権限を 付与 します。たとえば、
system.query_logのみにアクセス権を与えたい場合: -
作成したユーザーを使用して、MySQL インターフェイス経由で ClickHouse Cloud サービスに接続します。
ClickHouse Cloud での複数 MySQL ユーザーに関するトラブルシューティング
新しい MySQL ユーザーを作成し、MySQL CLI クライアント経由で接続する際に次のエラーが表示される場合があります:
この場合は、ユーザー名が mysql4<subdomain>_<username> という形式(上記で説明したとおり)になっていることを確認してください。
セルフマネージド ClickHouse での MySQL インターフェイスの有効化
サーバーの構成ファイルに mysql_port 設定を追加します。たとえば、config.d/ ディレクトリ 内の新しい XML ファイルでこのポートを定義できます。
ClickHouse サーバーを起動し、Listening for MySQL compatibility protocol というメッセージを含む、次のようなログメッセージを探します。
MySQL を ClickHouse に接続する
次のコマンドは、MySQL クライアント mysql から ClickHouse へ接続する方法を示します。
例えば:
接続に成功した場合の出力:
すべての MySQL クライアントとの互換性を確保するため、設定ファイルではユーザーのパスワードを double SHA1 で指定することを推奨します。 ユーザーパスワードを SHA256 で指定した場合、一部のクライアント(mysqljs や、古いバージョンのコマンドラインツール MySQL および MariaDB)は認証に失敗します。
制限事項:
-
プリペアドステートメントはサポートされていません
-
一部のデータ型は文字列として送信されます
長時間実行されているクエリをキャンセルするには、KILL QUERY connection_id ステートメントを使用します(実行時には KILL QUERY WHERE query_id = connection_id に置き換えられます)。例: