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 のコマンドラインツール)は認証できなくなります。
制限事項:
-
prepared クエリはサポートされません
-
一部のデータ型は文字列として送信されます
長時間実行中のクエリをキャンセルするには、KILL QUERY connection_id 文を使用します(処理時に KILL QUERY WHERE query_id = connection_id に置き換えられます)。例: