MySQLインターフェース
ClickHouseはMySQLワイヤプロトコルをサポートしています。これにより、ネイティブのClickHouseコネクタを持たない特定のクライアントは、代わりにMySQLプロトコルを利用できるようになります。これは以下のBIツールで検証されています:
未テストのクライアントや統合を試している場合、以下の制限がある可能性があることに注意してください:
- SSL実装が完全に互換性がないかもしれません;潜在的な TLS SNI の問題があるかもしれません。
- 特定のツールはまだ実装されていない方言機能(例:MySQL固有の関数や設定)を必要とする場合があります。
ネイティブドライバが利用可能な場合(例: DBeaver)、MySQLインターフェースよりもこちらの使用を推奨します。また、ほとんどのMySQL言語クライアントは問題なく動作するはずですが、MySQLインターフェースは既存のMySQLクエリを持つコードベースのドロップイン代替品であることは保証されていません。
特定のツールにネイティブのClickHouseドライバがなく、MySQLインターフェースを介して使用したい場合、互換性の問題があると感じたら、ClickHouseリポジトリに問題を作成してください。
上記のBIツールのSQL方言をよりよくサポートするために、ClickHouseのMySQLインターフェースは、設定 prefer_column_name_to_alias = 1でSELECTクエリを暗黙的に実行します。 これをオフにすることはできず、稀なエッジケースにおいて、ClickHouseの通常のクエリインターフェースとMySQLクエリインターフェース間で異なる動作が発生する場合があります。
ClickHouse CloudでMySQLインターフェースを有効にする
- ClickHouse Cloud Serviceを作成した後、
接続
ボタンをクリックします。

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

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

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

ClickHouse Cloudで複数のMySQLユーザーを作成する
デフォルトでは、mysql4<subdomain>
ユーザーが組み込まれており、default
と同じパスワードを使用します。<subdomain>
部分は、ClickHouse Cloudホスト名の最初のセグメントです。この形式は、セキュア接続を実装するツールと連携するために必要ですが、TLSハンドシェイクにSNI情報を提供しないツールがあるため、ユーザー名に追加のヒントを与えずに内部ルーティングを行うことは不可能になります(MySQLコンソールクライアントがそのようなツールの1つです)。
このため、MySQLインターフェースで使用する新しいユーザーを作成する際には、mysql4<subdomain>_<username>
形式に従うことを 強く推奨 します。ここで、<subdomain>
はCloudサービスを識別するためのヒントであり、<username>
は任意のサフィックスです。
ClickHouse Cloudホスト名が foobar.us-east1.aws.clickhouse.cloud
の場合、<subdomain>
部分は foobar
に等しく、カスタムMySQLユーザー名は mysql4foobar_team1
のようになります。
特定の設定を適用する必要がある場合など、MySQLインターフェース用に追加のユーザーを作成できます。
-
任意 - カスタムユーザー用に適用する設定プロファイルを作成します。例えば、
my_custom_profile
という名前の追加設定を持つプロファイルを作成し、後で作成したユーザーで接続するときにデフォルトとして適用されます:prefer_column_name_to_alias
は単なる例として使用されており、他の設定を使用することもできます。 -
以下の形式を用いてユーザーを作成します:
mysql4<subdomain>_<username>
(上記を参照)。パスワードはダブル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サーバーを起動し、MySQL互換プロトコルのリスニングに関する以下のようなログメッセージを探します:
MySQLをClickHouseに接続する
以下のコマンドは、MySQLクライアント mysql
をClickHouseに接続する方法を示しています:
例えば:
接続に成功した場合の出力:
すべてのMySQLクライアントとの互換性を保つために、設定ファイル内でダブルSHA1でユーザーパスワードを指定することをお勧めします。 ユーザーパスワードがSHA256を使用して指定されている場合、一部のクライアントでは認証できないことがあります(mysqljsや古いコマンドラインツールMySQLおよびMariaDBのバージョン)。
制限:
-
準備済みクエリはサポートされていません
-
一部のデータ型は文字列として送信されます
長いクエリをキャンセルするには、KILL QUERY connection_id
文を使用します(処理中にKILL QUERY WHERE query_id = connection_id
に置き換えられます)。例えば: