Cloud SQL Auth Proxy Docker イメージを使用した SQL サーバー クライアントの接続

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

始める前に

次の作業を完了している必要があります。

  • gcloud CLI がインストールされていること。詳細
  • gcloud CLI の承認。詳細
  • gcloud CLI のデフォルト プロジェクトの設定。詳細
  • Cloud SQL インスタンスでのデータベース ユーザーの構成。詳細

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

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

  1. Enable the Cloud SQL Admin API.

    Enable the API

  2. 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 インスタンスへの接続に記載されている手順に沿って、インスタンスへのターミナル接続を開きます。
  3. Compute Engine インスタンスまたはクライアント マシンに sqlcmd クライアントがまだインストールされていない場合はインストールします。

    Debian、Ubuntu

    Debian / Ubuntu の場合は、該当する SQL Server コマンドライン ツールをインストールするをご覧ください。

    CentOS / RHEL

    CentOS / RHEL の場合は、該当する SQL Server コマンドライン ツールをインストールするをご覧ください。

    openSUSE

    openSUSE の場合は、該当する SQL Server コマンドライン ツールをインストールするをご覧ください。

    他のプラットフォーム

    SQL サーバーをインストールするためのランディング ページと、SQL Server のダウンロード ページをご覧ください。

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

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

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

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

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

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

    Cloud SQL Auth Proxy の起動時に、鍵ファイルへのパスを「PATH_TO_KEY_FILE」として指定します。

  7. Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

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

    例: myproject:us-central1:myinstance

  9. Cloud SQL Auth Proxy を起動します。

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

    TCP ソケット

    docker run -d \
      -v <PATH_TO_KEY_FILE>:/path/to/service-account-key.json \
      -p 127.0.0.1:1433:1433 \
      gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.12.0 \
      --credentials-file /path/to/service-account-key.json <INSTANCE_CONNECTION_NAME>
    

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

    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>:/path/to/service-account-key.json \
      gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.12.0 //
      --unix-socket=/cloudsql \
      --credentials-file /path/to/service-account-key.json <INSTANCE_CONNECTION_NAME> 
    

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

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

    -v /mnt/stateful_partition/cloudsql:/cloudsql

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

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

    使用する接続文字列は、Cloud SQL Auth Proxy の起動時に TCP ソケットを使用したか、Docker を使用したかによって異なります。

    TCP ソケット

    1. sqlcmd クライアントを起動します。
      sqlcmd -S tcp:127.0.0.1,1433 -U USERNAME -P PASSWORD
      

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

    2. プロンプトが表示されたら、パスワードを入力します。
    3. sqlcmd プロンプトが表示されます。
お困りの場合、プロキシのトラブルシューティングについては、Cloud SQL Auth Proxy 接続のトラブルシューティングまたは Cloud SQL のサポートページをご覧ください。

Cloud SQL Auth Proxy Docker イメージを最新の状態に保つ

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

次のステップ