Cloud SQL Proxy Docker イメージを使用して MySQL クライアントを接続する

ここでは、Linux または Compute Engine の Linux インスタンスを実行しているクライアント マシンから Cloud SQL Proxy Docker イメージを使用して、MySQL クライアントを Cloud SQL インスタンスに接続する方法について説明します。

始める前に

次の作業を行っておく必要があります。

  • gcloud コマンドライン ツールのインストール。 詳細
  • gcloud ツールの認証。 詳細
  • gcloud ツールのデフォルト プロジェクトの設定。 詳細
  • Cloud SQL インスタンスでのデータベース ユーザーの構成。 詳細

Proxy Docker イメージを使用して MySQL クライアントを接続する

Proxy Docker イメージを使用して接続するには:

    {% dynamic if "no_credentials" in setvar.task_params %}{% dynamic setvar credential_type %}NO_AUTH{% dynamic endsetvar %}{% dynamic if not setvar.redirect_url %}{% dynamic setvar redirect_url %}https://console.cloud.google.com{% dynamic endsetvar %}{% dynamic endif %}{% dynamic endif %}{% dynamic if setvar.in_henhouse_no_auth_whitelist %}{% dynamic if not setvar.credential_type %}{% dynamic setvar credential_type %}NO_AUTH{% dynamic endsetvar %}{% dynamic endif %}{% dynamic elif setvar.in_henhouse_service_account_whitelist %}{% dynamic if not setvar.credential_type %}{% dynamic setvar credential_type %}SERVICE_ACCOUNT{% dynamic endsetvar %}{% dynamic endif %}{% dynamic endif %}{% dynamic if not setvar.service_account_roles and setvar.credential_type == "SERVICE_ACCOUNT" %}{% dynamic setvar service_account_roles %}{% dynamic endsetvar %}{% dynamic endif %}{% dynamic setvar console %}{% dynamic if "no_steps" not in setvar.task_params %}
  1. {% dynamic endif %}{% dynamic if setvar.api_list %}{% dynamic if setvar.in_henhouse_no_auth_whitelist or setvar.in_henhouse_service_account_whitelist %}GCP Console プロジェクトをセットアップします。

    プロジェクトをセットアップする

    クリックして、以下を行います。

    • プロジェクトを作成または選択します。
    • プロジェクトに{% dynamic if setvar.api_names %}{% dynamic print setvar.api_names %}{% dynamic else %}必要な{% dynamic endif %}{% dynamic if "," in setvar.api_list %} API{% dynamic elif "API" in setvar.api_names %}{% dynamic else %} API{% dynamic endif %} を有効にします。
    • {% dynamic if setvar.credential_type == 'SERVICE_ACCOUNT' %}
    • サービス アカウントを作成します。
    • JSON として秘密鍵をダウンロードします。
    • {% dynamic endif %}

    これらのリソースは、GCP Console でいつでも表示および管理できます。

    {% dynamic else %}{% dynamic if "no_text" not in setvar.task_params %}{% dynamic if setvar.api_names %}{% dynamic print setvar.api_names %}{% dynamic else %}必要な{% dynamic endif %}{% dynamic if "," in setvar.api_list %} API{% dynamic elif "API" in setvar.api_names %}{% dynamic else %} API{% dynamic endif %} を有効にします。 {% dynamic endif %}

    {% dynamic if "," in setvar.api_list %}API{% dynamic else %}API{% dynamic endif %}を有効にする

    {% dynamic endif %}{% dynamic endif %}{% dynamic if "no_steps" not in setvar.task_params %}
  2. {% dynamic endif %}{% dynamic endsetvar %}{% dynamic print setvar.console %}

  3. Compute Engine インスタンスを使用している場合は、インスタンスを準備します。
    1. Compute Engine インスタンスのプロパティを表示します。
      gcloud compute instances describe [GCE_INSTANCE_NAME]
    2. インスタンスで有効になっているスコープを確認します。

      スコープを使用した認証には、次のスコープが両方とも必要です。

      • https://www.googleapis.com/auth/sqlservice.admin
      • https://www.googleapis.com/auth/devstorage.read_write

      または、https://www.googleapis.com/auth/cloud-platform スコープですべての Google Cloud Platform API を有効にします。

      Compute Engine インスタンスに適切なスコープがない場合は、インスタンスを更新して適切なスコープを含めることができます。詳細については、Compute Engine のドキュメントをご覧ください。

    3. Linux インスタンスへの接続に記載されている手順に沿って、インスタンスへのターミナル接続を開きます。
  4. Compute Engine インスタンスまたはクライアント マシンに MySQL クライアントがまだインストールされていない場合はインストールします。

    Debian / Ubuntu

    MySQL クライアントをパッケージ マネージャーからインストールします。

    sudo apt-get update
    sudo apt-get install mysql-client
    

    CentOS / RHEL

    MySQL クライアントをパッケージ マネージャーからインストールします。

    sudo yum install mysql
    

    openSUSE

    MySQL クライアントをパッケージ マネージャーからインストールします。

    sudo zypper install mysql-client
    

    他のプラットフォーム

    1. プラットフォーム向けの MySQL Community Server を MySQL Community Server ダウンロード ページからダウンロードします。
      Community Server に MySQL クライアントが含まれています。
    2. ダウンロード ページの指示に沿って、Community Server をインストールします。

    MySQL のインストールの詳細については、MySQL リファレンス マニュアルの MySQL のインストールとアップグレードをご覧ください。

  5. 必要な場合は、Docker クライアントをインストールします。
    curl https://get.docker.com | sh
    sudo usermod -aG docker $USER
    

    コンテナに最適化された Compute Engine インスタンスを使用している場合は、Docker クライアントはすでにインストールされています。

  6. Proxy Docker イメージを Google Container Registry からインストールします。
    docker pull gcr.io/cloudsql-docker/gce-proxy:1.12
  7. Proxy Docker イメージを(Compute Engine インスタンスではなく)ローカルマシン上で実行する場合や、Compute Engine インスタンスが適切なスコープを持っていない場合は、Google Cloud Platform サービス アカウントを作成します。
    1. Google Cloud Platform Console の [サービス アカウント] ページに移動します。

      [サービス アカウント] ページに移動

    2. 必要に応じて、Cloud SQL インスタンスを含むプロジェクトを選択します。
    3. [サービス アカウントを作成] をクリックします。
    4. [サービス アカウントの作成] ダイアログで、わかりやすいサービス アカウント名を指定します。
    5. [役割] で、次のいずれかの役割を選択します。
      • [Cloud SQL] > [Cloud SQL クライアント]
      • [Cloud SQL] > [Cloud SQL 編集者]
      • [Cloud SQL] > [Cloud SQL 管理者]

      [Project] > [編集者] の順に選択して、基本の役割である編集者を使用することもできますが、編集者の役割には Google Cloud Platform 全体に対する権限が含まれます。

      これらの役割が表示されない場合、Google Cloud Platform ユーザーに resourcemanager.projects.setIamPolicy 権限がない可能性があります。権限を確認するには、Google Cloud Platform Console の [IAM] ページにアクセスし、自分のユーザー ID を検索します。

    6. 必要に応じて [サービス アカウント ID] を一意のわかりやすい値に変更して、後でこのサービス アカウントを簡単に見つけられるようにします。
    7. [新しい秘密鍵の提供] をクリックします。
    8. デフォルトのキータイプは JSON であり、この値を使用するのが適切です。
    9. [作成] をクリックします。

      秘密鍵ファイルがマシンにダウンロードされます。秘密鍵ファイルは、別の場所に移動できます。安全な場所に鍵ファイルを保管してください。

    プロキシの開始時に鍵ファイルを「PATH_TO_KEY_FILE」として指定します。

  8. Google Cloud Platform Console で Cloud SQL インスタンス ページに移動します。

    Cloud SQL インスタンス ページに移動

  9. インスタンスを選択して [インスタンスの詳細] ページを開き、インスタンス接続名をコピーします。

    例: myinstance:us-central1:myproject

  10. プロキシを開始します。

    言語や環境に応じて、TCP ソケットまたは Unix ソケットのどちらかを使用してプロキシを開始できます。Unix ソケットは、Java プログラミング言語で作成されたアプリケーションや Windows 環境ではサポートされていません。

    TCP ソケット

    docker run -d \
      -v <PATH_TO_KEY_FILE>:/config \
      -p 127.0.0.1:3306:3306 \
      gcr.io/cloudsql-docker/gce-proxy:1.12 /cloud_sql_proxy \
      -instances=<INSTANCE_CONNECTION_NAME>=tcp:0.0.0.0:3306 -credential_file=/config
    

    Compute Engine インスタンスによって提供される認証情報を使用している場合は、credential_file パラメータと -v <PATH_TO_KEY_FILE>:/config の行を含めないでください。

    プロキシがローカルホストの外側に公開されないように、必ず -p に 127.0.0.1 プレフィックスを指定します。インスタンス パラメータに含まれる「0.0.0.0」は、Docker コンテナの外側からポートにアクセスできるようにするために必要です。

    Unix ソケット

    docker run -d -v /cloudsql:/cloudsql \
      -v <PATH_TO_KEY_FILE>:/config \
      gcr.io/cloudsql-docker/gce-proxy /cloud_sql_proxy -dir=/cloudsql \
      -instances=<INSTANCE_CONNECTION_NAME> -credential_file=/config
    

    Compute Engine インスタンスによって提供される認証情報を使用している場合は、credential_file パラメータと -v <PATH_TO_KEY_FILE>:/config の行を含めないでください。

    コンテナ最適化イメージを使用している場合は、/cloudsql の代わりに書き込み可能なディレクトリを使用します。たとえば、次のようにします。

    -v /mnt/stateful_partition/cloudsql:/cloudsql

    複数のインスタンスをカンマで区切って指定できます。また、Compute Engine メタデータを使用して接続対象のインスタンスを動的に決定することもできます。 プロキシ パラメータの詳細については、こちらをご覧ください。

  11. クライアントを起動します。

    使用する接続文字列は、プロキシの開始時に TCP ソケットを使用したか Unix ソケットを使用したかによって異なります。

    TCP ソケット

    1. MySQL クライアントを起動します。
      mysql -u <USERNAME> -p --host 127.0.0.1
      

      TCP ソケットを使用して接続する場合、プロキシには 127.0.0.1 経由でアクセスします。

    2. パスワードを入力します。
    3. MySQL のプロンプトが表示されます。

    Unix ソケット

    1. MySQL クライアントを起動します。
      mysql -u <USERNAME> -p -S /cloudsql/<INSTANCE_CONNECTION_NAME>
      
    2. パスワードを入力します。
    3. MySQL のプロンプトが表示されます。

お困りの場合、プロキシのトラブルシューティングについては、Cloud SQL Proxy 接続のトラブルシューティングをご覧ください。または、Cloud SQL のサポートページをご覧ください。

Proxy Docker イメージを最新状態に保つ

Proxy Docker イメージは、Cloud SQL Proxy の特定のバージョンに基づいています。Cloud SQL Proxy の新しいバージョンがリリースされたら、Proxy Docker イメージの新しいバージョンを pull して、環境を最新状態に保つ必要があります。Cloud SQL Proxy の最新バージョンは Cloud SQL Proxy Github リリースページで確認できます。また、プロキシの今後のリリースについては、Google Groups Cloud SQL のお知らせフォーラムで通知されます。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...