メインコンテンツまでスキップ
メインコンテンツまでスキップ

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インターフェースを有効にする

  1. ClickHouse Cloud Serviceを作成した後、接続 ボタンをクリックします。

認証情報画面 - プロンプト
  1. Connect with ドロップダウンを MySQL に変更します。

認証情報画面 - MySQL が選択された
  1. 特定のサービスのMySQLインターフェースを有効にするためにスイッチを切り替えます。これにより、このサービスのポート 3306 が公開され、ユニークなMySQLユーザー名を含む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インターフェース用に追加のユーザーを作成できます。

  1. 任意 - カスタムユーザー用に適用する設定プロファイルを作成します。例えば、my_custom_profileという名前の追加設定を持つプロファイルを作成し、後で作成したユーザーで接続するときにデフォルトとして適用されます:

    prefer_column_name_to_aliasは単なる例として使用されており、他の設定を使用することもできます。

  2. 以下の形式を用いてユーザーを作成します:mysql4<subdomain>_<username>上記を参照)。パスワードはダブルSHA1形式である必要があります。例えば:

    または、このユーザー用にカスタムプロファイルを使用する場合:

    ここで、my_custom_profileは先ほど作成したプロファイルの名前です。

  3. 必要な許可を新しいユーザーに付与して、目的のテーブルやデータベースと対話できるようにします。例えば、system.query_logのみへのアクセスを付与したい場合:

  4. 作成したユーザーを使用して、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に置き換えられます)。例えば: