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

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 ボタンをクリックします。

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

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

Credentials screen - Enabled MySQL

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

Credentials screen - Connection String

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 に置き換えられます)を使用します。たとえば: