Cloud SQL Auth Proxy を使用して接続する

このページでは、Cloud SQL Auth Proxy を使用して MySQL クライアントを Cloud SQL インスタンスに接続する方法を説明します。

パブリック IP を使用して mysql クライアントを Cloud SQL インスタンスに接続する方法については、データベース クライアントを使用して接続するをご覧ください。

プロキシの仕組みの詳細については、Cloud SQL Auth Proxy についてをご覧ください。

始める前に

MySQL を Cloud SQL インスタンスに接続するには、以下を実行しておく必要があります。

Cloud SQL Auth Proxy を認証するためのオプション

これらのオプションではすべて、Cloud SQL インスタンスを識別するための接続文字列として INSTANCE_CONNECTION_NAME を使用します。INSTANCE_CONNECTION_NAME は、Google Cloud Console のインスタンスの [概要] ページに表示されます。また、次のコマンドを実行して確認することもできます。

gcloud sql instances describe INSTANCE_NAME

例: myproject:myregion:myinstance

これらのオプションの中には、アカウントの RSA 秘密鍵を含む JSON 認証情報ファイルを使用するものもあります。サービス アカウントの JSON 認証情報ファイルを作成する手順については、サービス アカウントの作成をご覧ください。

Cloud SQL Auth Proxy では、環境に応じて、認証のための代替手段が複数用意されています。Cloud SQL Auth Proxy は、次の順序で各項目をチェックし、最初に見つかったものを使用して認証を試みます。

  1. credential_file フラグによって指定された認証情報。

    サービス アカウントを使用して、関連付けられた JSON ファイルを作成してダウンロードし、Cloud SQL Auth Proxy を起動するとき、そのファイルのパスに -credential_file フラグを設定します。サービス アカウントには、Cloud SQL インスタンスに対する必要な権限が付与されていることが必要です。

    コマンドラインでこのオプションを使用するには、-credential_file フラグを JSON 認証情報ファイルのパスとファイル名に設定して、cloud_sql_proxy コマンドを呼び出します。パスは現在の作業ディレクトリへの絶対パス、または相対パスとして設定できます。例:

    ./cloud_sql_proxy -credential_file=PATH_TO_KEY_FILE -instances=INSTANCE_CONNECTION_NAME
      

    サービス アカウントに IAM ロールを追加する方法の詳細については、サービス アカウントへのロールの付与をご覧ください。

    Cloud SQL でサポートされるロールの詳細については、Cloud SQL のプロジェクトのアクセス制御をご覧ください。

  2. アクセス トークンによって指定された認証情報。

    アクセス トークンを作成し、OAuth 2.0 アクセス トークンに -token フラグを設定して cloud_sql_proxy コマンドを呼び出します。例:
    ./cloud_sql_proxy -token=ACCESS_TOKEN -instances=INSTANCE_CONNECTION_NAME
      
  3. 環境変数によって指定された認証情報。

    このオプションは、-credential_file コマンドライン引数を使用する代わりに、GOOGLE_APPLICATION_CREDENTIALS 環境変数で設定する JSON 認証情報ファイルを指定する点を除けば、-credential_file フラグを使用する場合と類似しています。
  4. 認証済みの Cloud SDK クライアントの認証情報。

    Cloud コマンドライン ツールをインストールし、個人アカウントで認証した場合は、Cloud SQL Auth Proxy で同じアカウント認証情報を使用できます。この方法は、開発環境の運用を開始する際に特に便利です。

    gcloud auth login 用のアカウントが選択されていない場合は、Cloud SQL Auth Proxy によって gcloud auth application-default login 用に選択されているアカウントがチェックされます。

  5. Compute Engine インスタンスに関連付けられている認証情報。

    Cloud SQL に Compute Engine インスタンスから接続している場合、Cloud SQL Auth Proxy は Compute Engine インスタンスに関連付けられているサービス アカウントを使用できます。サービス アカウントに Cloud SQL インスタンスに対する必要な権限が付与されている場合、Cloud SQL Auth Proxy は正常に認証を行います。

    Compute Engine インスタンスが Cloud SQL インスタンスと同じプロジェクトに属している場合、Compute Engine インスタンスのデフォルトのサービス アカウントには、Cloud SQL Auth Proxy の認証に必要な権限が付与されています。この 2 つのインスタンスが別々のプロジェクトに属している場合は、Cloud SQL インスタンスが属するプロジェクトに Compute Engine インスタンスのサービス アカウントを追加する必要があります。

  6. 環境のデフォルトのサービス アカウント

    前述のいずれの場所でも認証情報を見つけることができない場合、Cloud SQL Auth Proxy はサーバー間での本番環境アプリケーションの認証の設定に記載されたロジックに従います。一部の環境(Compute Engine、App Engine など)では、アプリケーションがデフォルトで認証に使用できるデフォルトのサービス アカウントが用意されています。デフォルトのサービス アカウントを使用する場合は、アカウントにロールと権限で概説している権限が付与されている必要があります。Google Cloud の認証のアプローチについて詳しくは、認証の概要をご覧ください。

サービス アカウントを作成する

  1. Google Cloud Console の [サービス アカウント] ページに移動します。

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

  2. Cloud SQL インスタンスを含むプロジェクトを選択します。
  3. [サービス アカウントを作成] をクリックします。
  4. [サービス アカウントの作成] ダイアログで、わかりやすいサービス アカウント名を指定します。
  5. [サービス アカウント ID] を一意のわかりやすい値に変更してから、[作成] をクリックします。
  6. [ロール] には、次のいずれかのロールを選択してから、[続行] をクリックし、[完了] をクリックします。
    • [Cloud SQL] > [Cloud SQL クライアント]
    • [Cloud SQL] > [Cloud SQL 編集者]
    • [Cloud SQL] > [Cloud SQL 管理者]
  7. 新しいサービス アカウントの操作メニューをクリックし、[鍵を管理] を選択します。
  8. [鍵を追加] プルダウン メニューをクリックして、[新しい鍵の作成] をクリックします。
  9. 鍵のタイプが JSON であることを確認し、[作成] をクリックします。

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

Cloud SQL Auth Proxy をインストールする

Linux 64 ビット

  1. Cloud SQL Auth Proxy をダウンロードします。
    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
    
  2. Cloud SQL Auth Proxy を動作可能にします。
    chmod +x cloud_sql_proxy
    

Linux 32 ビット

  1. Cloud SQL Auth Proxy をダウンロードします。
    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.386 -O cloud_sql_proxy
    
  2. Cloud SQL Auth Proxy を動作可能にします。
    chmod +x cloud_sql_proxy
    

macOS 64 ビット

  1. Cloud SQL Auth Proxy をダウンロードします。
    curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64
    
  2. Cloud SQL Auth Proxy を動作可能にします。
    chmod +x cloud_sql_proxy
    

macOS 32 ビット

  1. Cloud SQL Auth Proxy をダウンロードします。
    curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.386
    
  2. Cloud SQL Auth Proxy を動作可能にします。
    chmod +x cloud_sql_proxy
    

Windows 64 ビット

https://dl.google.com/cloudsql/cloud_sql_proxy_x64.exe を右クリックして [名前を付けてリンク先を保存] を選択し、Cloud SQL Auth Proxy をダウンロードします。ファイル名を cloud_sql_proxy.exe に変更します。

Windows 32 ビット

https://dl.google.com/cloudsql/cloud_sql_proxy_x86.exe を右クリックして [名前を付けてリンク先を保存] を選択し、Cloud SQL Auth Proxy をダウンロードします。ファイル名を cloud_sql_proxy.exe に変更します。

Cloud SQL Auth Proxy の Docker イメージ

便宜上、Cloud SQL チームは、お客様が使用する Cloud SQL Auth Proxy を含むいくつかのコンテナ イメージを保持しています。これらのイメージの詳細については、GitHub の Cloud SQL Auth Proxy リポジトリをご覧ください。次のコマンドを使用して、最新のイメージをローカルマシンに Docker で pull できます。
docker pull gcr.io/cloudsql-docker/gce-proxy:1.19.1

その他の OS

ここに記載されていないその他のオペレーティング システムの場合は、ソースから Cloud SQL Auth Proxy をコンパイルできます。

Cloud SQL Auth Proxy の起動

言語や環境に応じて、TCP ソケット、Unix ソケット、または Cloud SQL Auth Proxy Docker イメージを使用して Cloud SQL Auth Proxy を起動できます。Cloud SQL Auth Proxy バイナリは、コマンドラインで指定された 1 つ以上の Cloud SQL インスタンスに接続し、TCP または Unix ソケットとしてローカル接続をオープンします。アプリケーション コードやデータベース管理クライアント ツールなど、他のアプリケーションやサービスは、これらの TCP または Unix ソケットの接続を介して Cloud SQL インスタンスに接続できます。

TCP ソケット

TCP 接続の場合、Cloud SQL Auth Proxy は、デフォルトでは localhost127.0.0.1)でリッスンします。したがって、インスタンスに tcp:PORT_NUMBER を指定すると、ローカル接続は 127.0.0.1:PORT_NUMBER になります。

また、ローカル接続に別のアドレスを指定することもできます。たとえば、ローカル接続用に Cloud SQL Auth Proxy が 0.0.0.0:1234 でリッスンする方法を次に示します。

  ./cloud_sql_proxy -instances=INSTANCE_CONNECTION_NAME=tcp:0.0.0.0:1234
  1. INSTANCE_CONNECTION_NAME をコピーします。これは、Google Cloud Console のインスタンスの [概要] ページで確認できます。また、次のコマンドを実行して確認することもできます。

    gcloud sql instances describe INSTANCE_NAME
    .

    例: myproject:myregion:myinstance

  2. インスタンスにパブリック IP とプライベート IP の両方が構成されている場合に、Cloud SQL Auth Proxy によってプライベート IP アドレスが使用されるようにするには、Cloud SQL Auth Proxy の起動時に次のオプションを指定する必要があります。
    -ip_address_types=PRIVATE
  3. サービス アカウントを使用して Cloud SQL Auth Proxy を認証する場合は、サービス アカウントを作成したときに作成された秘密鍵ファイルのクライアント マシン上での場所を記録しておきます。
  4. Cloud SQL Auth Proxy を起動します。

    有効な Cloud SQL Auth Proxy の呼び出し文字列:

    • Cloud SDK 認証を使用する場合
      ./cloud_sql_proxy -instances=INSTANCE_CONNECTION_NAME=tcp:3306
      
      指定されたポートは、ローカル データベース サーバーなどがまだ使用していないものにする必要があります。
    • サービス アカウントを使用して、インスタンス接続の名前を明示的に指定する場合(本番環境用に推奨):
      ./cloud_sql_proxy -instances=INSTANCE_CONNECTION_NAM=tcp:3306 \
                        -credential_file=PATH_TO_KEY_FILE &
      

    Cloud SQL Auth Proxy オプションの詳細については、Cloud SQL Auth Proxy を認証するためのオプションインスタンスを指定するためのオプションをご覧ください。

Unix ソケット

Cloud SQL Auth Proxy は Unix ソケットでリッスンできます。これは、フォルダを使用して同じホスト上で動作している 2 つのプロセス間の通信を管理するための Posix 標準のメカニズムです。Unix ソケットを使用する利点は、セキュリティが向上し、レイテンシが低くなることです。ただし、外部マシンから Unix ソケットにはアクセスできません。

Unix ソケットを作成して使用するには、ターゲット ディレクトリが存在し、Cloud SQL Auth Proxy とアプリケーションの両方に読み取りと書き込みのアクセス権が付与されている必要があります。

  1. 明示的なインスタンス指定を使用する場合は、INSTANCE_CONNECTION_NAME をコピーします。これは、Google Cloud Console のインスタンスの [概要] ページで確認できます。また、以下のコマンドを実行して確認することもできます。

    gcloud sql instances describe INSTANCE_NAME
    .

    例: myproject:myregion:myinstance

  2. Cloud SQL Auth Proxy ソケットを格納するディレクトリを作成します。
    sudo mkdir /cloudsql; sudo chmod 777 /cloudsql
  3. サービス アカウントを使用して Cloud SQL Auth Proxy を認証する場合は、サービス アカウントを作成したときに作成された秘密鍵ファイルのクライアント マシン上での場所を記録しておきます。
  4. 新しいターミナル ウィンドウを開き、Cloud SQL Auth Proxy を起動します。

    有効な Cloud SQL Auth Proxy の呼び出し文字列:

    • サービス アカウントを使用して、インスタンス接続の名前を明示的に指定する場合(本番環境用に推奨):
      ./cloud_sql_proxy -dir=/cloudsql -instances=INSTANCE_CONNECTION_NAME
      -credential_file=PATH_TO_KEY_FILE &
    • Cloud SDK 認証と自動インスタンス検出を使用する場合
      ./cloud_sql_proxy -dir=/cloudsql &

    専用のターミナルで Cloud SQL Auth Proxy を起動することを強くおすすめします。こうすることで、他のプログラムからの出力と混ざることなく出力をモニタリングできます。

    Cloud SQL Auth Proxy オプションの詳細については、Cloud SQL Auth Proxy を認証するためのオプションインスタンスを指定するためのオプションをご覧ください。

Cloud SQL Auth Proxy の Docker イメージ

Docker コンテナで Cloud SQL Auth Proxy を動作させるには、Google Container Registry から入手できる Cloud SQL Auth Proxy Docker イメージを使用します。

次のコマンドで、TCP ソケットまたは Unix ソケットのどちらかを使用して、Cloud SQL Auth Proxy を起動できます。このオプションは、Cloud SQL インスタンスを識別するための接続文字列として INSTANCE_CONNECTION_NAME を使用します。INSTANCE_CONNECTION_NAME は、Google Cloud Console のインスタンスの [概要] ページに表示されます。また、次のコマンドを実行して確認することもできます。

gcloud sql instances describe INSTANCE_NAME
.

例: myproject:myregion:myinstance

言語や環境に応じて、TCP ソケットまたは Unix ソケットのどちらかを使用して Cloud SQL Auth Proxy を起動できます。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.19.1 /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 の行を含めないでください。

Cloud SQL Auth Proxy がローカルホストの外部に公開されないように、常に 127.0.0.1 に -p の接頭辞を指定します。インスタンス パラメータに含まれる「0.0.0.0」は、Docker コンテナの外側からポートにアクセスできるようにするために必要です。

Unix ソケットの使用

docker run -d -v /cloudsql:/cloudsql \\
  -v PATH_TO_KEY_FILE:/config \\
  gcr.io/cloudsql-docker/gce-proxy:1.19.1 /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 メタデータを使用して接続対象のインスタンスを動的に決定することもできます。Cloud SQL Auth Proxy パラメータについての詳細をご覧ください。

その他のコマンドライン引数

これまでの例は最も一般的なユースケースを対象としていますが、Cloud SQL Auth Proxy にはコマンドライン引数で設定できる構成オプションが他にもあります。コマンドライン引数のヘルプについては、-help フラグを使用して最新のドキュメントをご覧ください。

./cloud_sql_proxy -help

Cloud SQL Auth Proxy コマンドライン オプションの使用方法のその他の例については、Cloud SQL Auth Proxy GitHub リポジトリの README をご覧ください。

Cloud SQL Auth Proxy に接続する

使用する接続文字列は、TCP ソケット、Unix ソケット、Docker のいずれを使用して Cloud SQL Auth Proxy を開始したかによって異なります。

TCP ソケット

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

    TCP ソケットを使用して接続する場合、Cloud SQL Auth Proxy には 127.0.0.1 経由でアクセスします。

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

Unix ソケットの使用

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

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

言語別のコードサンプル

Unix または TCP ソケットに接続できる任意の言語を使用して、Cloud SQL Auth Proxy に接続できます。アプリケーションでどのように連携するのかを把握できるように、GitHub の詳細な例からコード スニペットをいくつか紹介します。

その他のトピック

プライベート IP でのプロキシの使用

プライベート IP を使用して Cloud SQL インスタンスに接続するには、プロキシがそのインスタンスと同じ VPC ネットワークにアクセスできるリソース上にある必要があります。

プロキシは、IP を使用して Cloud SQL インスタンスとの接続を確立します。デフォルトでは、プロキシはパブリック IPv4 アドレスを使用して接続を試行します。Cloud SQL インスタンスにプライベート IP しかない場合、プロキシはプライベート IP アドレスを使用して接続します。

インスタンスにパブリック IP とプライベート IP の両方が構成されている場合に、プロキシによってプライベート IP アドレスが使用されるようにするには、プロキシの開始時に次のオプションを指定する必要があります。

-ip_address_types=PRIVATE

データベース ユーザー アカウントに Cloud SQL Auth Proxy を要求する

プロキシを使用してインスタンスに接続するときは、インスタンスにログインするためのユーザー アカウントを指定します。この場合、任意のデータベース ユーザー アカウントを使用することができます。ただし、プロキシは常にプロキシ以外ではアクセスできないホスト名から接続するので、プロキシによってのみ使用できるユーザー アカウントを作成できます。このようにすると、インスタンスまたはデータのセキュリティを損なうことなく、パスワードを使用しないでこのアカウントを指定できるという利点があります。

Cloud SQL Auth Proxy でのみ使用できるユーザー アカウントを作成するには、ホスト名を 'cloudsqlproxy~[IP_ADDRESS]' として指定します。また、IP アドレスのワイルドカードを使用して、'cloudsqlproxy~%' にすることもできます。完全なユーザー アカウント名は次のようになります。

'[USER_NAME]'@'cloudsqlproxy~%'

または

'[USER_NAME]'@'cloudsqlproxy~[IP_ADDRESS]'

ユーザーの作成については、ユーザーを作成して管理するをご覧ください。Cloud SQL でユーザー アカウントがどのように使用されるかについては、ユーザーをご覧ください。

プロキシを別のプロセスで実行する

Cloud SQL Auth Proxy を別のターミナル プロセスで実行することはコンソール出力と他のプログラムからの出力が混在するのを回避するうえで有用な可能性があります。プロキシを別のプロセスで呼び出すには、次の構文を使用します。

Linux

Linux または macOS では、コマンドラインで末尾の & を使用して、別のプロセスでプロキシを起動します。

./cloud_sql_proxy -instances=INSTANCE_CONNECTION_NAME=tcp:PORT_NUMBER
  -credential_file=PATH_TO_KEY_FILE &

Windows

Windows PowerShell では、Start-Process コマンドを使用してプロキシを別のプロセスで起動します。

Start-Process -filepath "cloud_sql_proxy.exe"
  -ArgumentList "-instances=INSTANCE_CONNECTION_NAME=tcp:PORT_NUMBER
  -credential_file=PATH_TO_KEY_FILE"

Docker コンテナでの Cloud SQL Auth Proxy の実行

Docker コンテナで Cloud SQL Auth Proxy を動作させるには、Google Container Registry から入手できる Proxy Docker イメージを使用します。次の gcloud コマンドを使用して Proxy Docker イメージをインストールできます。

docker pull gcr.io/cloudsql-docker/gce-proxy:1.19.1

プロキシは、次のコマンドで TCP ソケットまたは Unix ソケットのどちらかを使用して開始できます。

TCP ソケット

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

Unix ソケット

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

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

-v /mnt/stateful_partition/cloudsql:/cloudsql

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

Cloud SQL Auth Proxy をサービスとして実行する

プロキシをバックグラウンド サービスとして実行すると、ローカルでの開発やテストに便利です。Cloud SQL インスタンスにアクセスする必要がある場合は、バックグラウンドでサービスを開始し、終了したらサービスを停止できます。

  • Cloud SQL Auth Proxy には現在、Windows サービスとして動作する組み込みのサポートはありませんが、サードパーティのサービス マネージャーを使用することで、サービスとしての動作が可能です。たとえば、NSSM を使用してプロキシを Windows サービスとして構成できます。NSSM はプロキシをモニタリングし、応答しなくなった場合にはプロキシを自動的に再起動します。詳細については、NSSM のドキュメントをご覧ください。

Cloud SQL Auth Proxy の使用に関するヒント

Cloud SQL Auth Proxy の呼び出し

プロキシ呼び出しの例はすべてバックグラウンドでプロキシを起動するので、プロンプトが返されます。プロキシからの出力が他のプログラムからの出力と混ざらないように、そのターミナルをプロキシ専用にすることをおすすめします。また、プロキシからの出力は接続の問題を診断する際に役立つため、ログファイルに取り込んでおくことをおすすめします。プロキシをバックグラウンドで起動しない場合、リダイレクトしなければ stdout に出力されます。

プロキシ ソケットのディレクトリとして /cloudsql を使用する必要はありません。(このディレクトリ名は、App Engine の接続文字列との相違を最小限に抑えるために選択されたものです)。ただし、ディレクトリ名を変更する場合は、全体の長さを最小限に保ってください。ディレクトリ名は、さらに長い文字列に組み込まれ、オペレーティング システムの長さ制限が適用されます。 システムによって異なりますが、通常は 91~108 文字です。Linux では、この長さが通常 108 文字と定義され、次のコマンドで確認できます。

cat /usr/include/linux/un.h | grep "define UNIX_PATH_MAX"

プロキシを使用した複数のインスタンスへの接続

1 つのローカル プロキシ クライアントを使用して、複数の Cloud SQL インスタンスに接続できます。これを行う方法は、Unix ソケットまたは TCP のどちらを使用しているかによって異なります。

Unix ソケット

プロキシを複数のインスタンスに接続するには、インスタンス接続名をカンマ区切りリスト(スペースなし)で、-instances パラメータ付きで指定します。プロキシは、起動時に各インスタンスに接続します。

指定されたディレクトリ内のソケットを使用して各インスタンスに接続します。

次に例を示します。

      ./cloud_sql_proxy -dir=/cloudsql -instances=myProject:us-central1:myInstance,myProject:us-central1:myInstance2 &
      mysql -u myUser -S /cloudsql/myProject:us-central1:myInstance2
  

TCP ソケット

TCP を使用して接続する場合は、インスタンスへの接続に使用するマシンでポートを指定します。すべてのインスタンスに専用のポートが必要です。mysql ツールではデフォルトで 3306 を使用しますが、別のポートを使用するように指定することもできます。

次に例を示します。

    # Start the proxy for two instances, each with its own port:

    ./cloud_sql_proxy -instances=myProject:us-central1:myInstance=tcp:3306,myProject:us-central1:myInstance2=tcp:1234

    # Connect to "myInstance" on port 3306, and "myInstance2" on port 1234

    mysql -u myInstanceUser --host 127.0.0.1  --port 3306
    mysql -u myInstance2User --host 127.0.0.1  --port 1234
  

プロキシの呼び出しと MySQL クライアント接続文字列

myProject プロジェクトの us-central1 にある myInstance インスタンスの MySQL ユーザー myUser に対するプロキシ呼び出しと接続文字列を使用できます。

自動インスタンス検出と gcloud 認証情報を使用する場合:
    ./cloud_sql_proxy -dir=/cloudsql &
    mysql -u myUser -S /cloudsql/myProject:us-central1:myInstance
プロジェクト検出と gcloud 認証情報を使用する場合:
    ./cloud_sql_proxy -dir=/cloudsql -projects=myProject &
    mysql -u myUser -S /cloudsql/myProject:us-central1:

Compute Engine インスタンスでインスタンスを明示的に指定する場合:
    ./cloud_sql_proxy -dir=/cloudsql -instances=myProject:us-central1:myInstance &
    mysql -u myUser -S /cloudsql/myProject:us-central1:myInstance
Unix で TCP を使用する場合:
    ./cloud_sql_proxy -instances=myProject:us-central1:myInstance=tcp:3306 &
    mysql -u myUser --host 127.0.0.1
Windows の場合(コマンドライン プロンプト):
    cloud_sql_proxy.exe -instances=myProject:us-central1:myInstance=tcp:3306
    mysql -u myUser --host 127.0.0.1

Cloud SQL Auth Proxy のオプションと接続文字列の詳細については、Cloud SQL Auth Proxy GitHub ページをご覧ください。

Cloud SQL Auth Proxy の接続に関するトラブルシューティング

Proxy Docker イメージは、Cloud SQL Auth Proxy の特定のバージョンに基づいています。Cloud SQL Auth Proxy の新しいバージョンが利用可能になったら、Proxy Docker イメージの最新バージョンを pull して、環境を最新の状態に保ってください。Cloud SQL Auth Proxy の最新バージョンは Cloud SQL Auth Proxy GitHub リリースページで確認できます。

Cloud SQL Auth Proxy を使用した Cloud SQL インスタンスへの接続の問題が発生した場合は、原因を特定するため、以下の点を確認してください。

  • プロキシ出力を確認します。

    プロキシの出力は多くの場合、問題の原因と解決方法を判断するのに役立ちます。出力をファイルに保存するか、プロキシを起動したターミナルを確認してください。

  • 403 notAuthorized エラーが発生し、サービス アカウントを使用してプロキシを認証している場合は、サービス アカウントに正しい権限が付与されていることを確認してください。

    サービス アカウントを確認するには、IAM ページでアカウントの ID を検索します。cloudsql.instances.connect 権限が必要です。この権限は、事前定義ロールの Cloud SQL AdminClientEditor に含まれています。

  • 必ず Cloud SQL Admin API を有効にしてください。

    有効になっていない場合は、プロキシログに「Error 403: Access Not Configured」のような出力が含まれています。

  • インスタンス リストに複数のインスタンスを含めている場合は、区切り記号としてカンマを使用していることを確認します。TCP を使用している場合は、インスタンスごとに異なるポートを指定していることを確認してください。

  • UNIX ソケットを使用して接続している場合は、プロキシの起動時に指定したディレクトリを一覧表示して、ソケットが作成されていることを確認します。

  • 送信ファイアウォール ポリシーがある場合は、ターゲット Cloud SQL インスタンス上のポート 3307 への接続が許可されていることを確認してください。

次のステップ