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

MySQL インターフェース

ClickHouse は MySQL ワイヤプロトコルをサポートしています。これにより、ネイティブの ClickHouse コネクタを持たない特定のクライアントが代わりに MySQL プロトコルを利用できるようになり、以下の BI ツールで検証されています:

他の未検証のクライアントや統合を試す場合、以下の制限に注意してください:

  • SSL の実装が完全に互換性がない可能性があり、潜在的な TLS SNI 問題があるかもしれません。
  • 特定のツールが、まだ実装されていないダイアレクト機能(例えば、MySQL 特有の関数や設定)を必要とする場合があります。

もしネイティブドライバーが利用可能な場合(例えば、DBeaver)、MySQL インターフェースではなく、それを使用することを常にお勧めします。加えて、ほとんどの MySQL 言語クライアントは正常に動作するはずですが、MySQL インターフェースが既存の MySQL クエリを含むコードベースのドロップイン置き換えであることは保証されません。

特定のツールがネイティブの ClickHouse ドライバーを持たず、そのツールを MySQL インターフェース経由で使用したいが、特定の互換性のない点を見つけた場合は、issue を作成してください

注記

上記の BI ツールの SQL ダイアレクトをよりよくサポートするために、ClickHouse の MySQL インターフェースは暗黙的に設定 prefer_column_name_to_alias = 1 で SELECT クエリを実行します。 これはオフにできず、稀なエッジケースでは ClickHouse の通常のクエリインターフェースと MySQL クエリインターフェースへのクエリの挙動が異なる可能性があります。

ClickHouse Cloud での MySQL インターフェースの有効化

  1. ClickHouse Cloud サービスを作成した後、Connect ボタンをクリックします。

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

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

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

ClickHouse Cloud での複数の MySQL ユーザーの作成

デフォルトでは、mysql4<subdomain> ユーザーが組み込まれており、default のパスワードと同じパスワードを使用します。<subdomain> 部分は ClickHouse Cloud ホスト名の最初のセグメントです。この形式は、安全な接続を実装するツールが必要ですが、TLS ハンドシェイクで SNI 情報を提供しない ため、ユーザー名に追加のヒントを持たずして内部ルーティングを行うことが不可能になります(MySQL コンソールクライアントがそのようなツールの一つです)。

このため、MySQL インターフェースで使用することを意図した新しいユーザーを作成する際には、mysql4<subdomain>_<username> 形式に従うことを強く推奨します。ここで、<subdomain> はクラウドサービスを識別するためのヒントであり、<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. Grant を使用して、新しいユーザーに望ましいテーブルまたはデータベースと対話するために必要な権限を付与します。たとえば、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 に置き換えられます)を使用します。たとえば: