このページでは、Compute Engine インスタンスにインストールされた psql クライアントを使用して Cloud SQL に接続する方法について説明します。
プライベート IP、パブリック IP、Cloud SQL Auth Proxy、または Cloud SQL Auth Proxy Docker イメージを使用できます。
Cloud SQL に接続された Compute Engine サンプル ウェブ アプリケーションを実行する手順ガイドについては、Compute Engine からの接続するためのクイックスタートをご覧ください。
始める前に
Compute Engine インスタンスを設定するための手順は、このタスクに含まれていません。Compute Engine インスタンスの作成や構成について詳しくは、Compute Engine のドキュメントをご覧ください。
プライベート IP
Compute Engine インスタンスからプライベート IP を使用して Cloud SQL に接続する場合は、環境に応じてプライベート サービス アクセスを設定し、Cloud SQL インスタンスでプライベート IP を使用するように構成します。Compute Engine インスタンスは、Cloud SQL インスタンスと同じリージョン内の、プライベート接続用に構成されたネットワーク上に存在する必要があります。詳細
1. プライベート IP を使用するようにインスタンスを構成します。
プライベート IP 接続を構成するの手順に沿って進めます。
2. Compute Engine インスタンスに対する Cloud Shell ターミナル接続を開きます。
インスタンスのオペレーティング システムに応じて適切な手順に従います。
- Linux の場合、Linux VM への接続をご覧ください。
- Windows の場合、Windows VM への接続をご覧ください。
Compute Engine インスタンスが RHEL または CentOS 公開イメージを実行する場合、SELinux によりプロキシ接続がブロックされることがあります。これが発生した場合、SELinux 機能を構成して接続が許可されるようにする必要があります。
RHEL の SELinux に関する詳細については、RHEL ドキュメントをご覧ください。CentOS の SELinux に関する詳細については、CentOS ドキュメントをご覧ください。
3. Compute Engine インスタンスに PSQL クライアントがまだインストールされていない場合は、インストールします。
Debian、Ubuntu
PSQL クライアントをパッケージ マネージャーから次のようにインストールします。
sudo apt-get update sudo apt-get install postgresql-client
CentOS / RHEL
PSQL クライアントをパッケージ マネージャーから次のようにインストールします。
sudo yum install postgresql
openSUSE
PSQL クライアントをパッケージ マネージャーから次のようにインストールします。
sudo zypper install postgresql
他のプラットフォーム
- ご使用のプラットフォームに対応する PostgreSQL Core Distribution を、PostgreSQL のダウンロード ページからダウンロードします。
Core Distribution には、PSQL クライアントが含まれています。 - ダウンロード ページの指示に沿って、PostgreSQL データベースをインストールします。
4. PSQL クライアントと接続します。
psql -h CLOUD_SQL_PRIVATE_IP_ADDRESS -U USERNAME
プライベート IP アドレスは、Cloud SQL インスタンス ページ、または次の gcloud
コマンドを実行することで確認できます。
gcloud sql instances list
パブリック IP
パブリック IP を使用して接続するには:
1. Compute Engine インスタンスに静的 IPv4 IP アドレスがない場合は、追加します。
IPv6 を使用して Compute Engine に接続することはできません。静的 IP アドレスの追加については、Compute Engine ドキュメントの新しい静的外部 IP アドレスの予約をご覧ください。
2. Compute Engine インスタンスの静的 IP アドレスを、Cloud SQL インスタンスに接続できるネットワークとして承認します。
詳細については、パブリック IP 接続のアクセスを構成するをご覧ください。
3. Cloud Shell ターミナルで Compute Engine インスタンスに接続します。
インスタンスのオペレーティング システムに応じて適切な手順に従います。
- Linux の場合、Linux VM への接続をご覧ください。
- Windows の場合、Windows VM への接続をご覧ください。
Compute Engine インスタンスが RHEL または CentOS 公開イメージを実行する場合、SELinux によりプロキシ接続がブロックされることがあります。これが発生した場合、SELinux 機能を構成して接続が許可されるようにする必要があります。
RHEL の SELinux に関する詳細については、RHEL ドキュメントをご覧ください。CentOS の SELinux に関する詳細については、CentOS ドキュメントをご覧ください。
4. Compute Engine インスタンスに PSQL クライアントがまだインストールされていない場合は、インストールします。
Debian、Ubuntu
PSQL クライアントをパッケージ マネージャーから次のようにインストールします。
sudo apt-get update sudo apt-get install postgresql-client
CentOS / RHEL
PSQL クライアントをパッケージ マネージャーから次のようにインストールします。
sudo yum install postgresql
openSUSE
PSQL クライアントをパッケージ マネージャーから次のようにインストールします。
sudo zypper install postgresql
他のプラットフォーム
- ご使用のプラットフォームに対応する PostgreSQL Core Distribution を、PostgreSQL のダウンロード ページからダウンロードします。
Core Distribution には、PSQL クライアントが含まれています。 - ダウンロード ページの指示に沿って、PostgreSQL データベースをインストールします。
5. PSQL クライアントと接続します。
psql -h CLOUD_SQL_PUBLIC_IP_ADDR -U USERNAME
パブリック IP アドレスは、Cloud SQL インスタンス ページ、または次の gcloud
コマンドを実行することで確認できます。
gcloud sql instances list
SSL を使用した接続方法については、SSL を使用して接続するをご覧ください。
6. psql のプロンプトが表示されます。
7. 未使用の接続を維持する必要がある場合:
TCP キープアライブを設定します。
詳しくは、Compute Engine ドキュメントのインスタンスとインターネットの間の通信をご覧ください。
インスタンスの接続は自動的に維持されます。
Cloud SQL Auth Proxy
Compute Engine から Cloud SQL Auth Proxy を使用して接続するには:1. Cloud SQL Admin API を有効にします。
2. サービス アカウントを作成します。
- Google Cloud コンソールで、[サービス アカウント] ページに移動します。
- Cloud SQL インスタンスを含むプロジェクトを選択します。
- [サービス アカウントを作成] をクリックします。
- [サービス アカウント名] 欄に、サービス アカウントのわかりやすい名前を入力します。
- [サービス アカウント ID] を一意のわかりやすい値に変更し、[作成して続行] をクリックします。
-
[ロールを選択] 項目をクリックして、以下のいずれかのロールを選択します。
- [Cloud SQL] > [Cloud SQL クライアント]
- [Cloud SQL] > [Cloud SQL 編集者]
- [Cloud SQL] > [Cloud SQL 管理者]
- [完了] をクリックして、サービス アカウントの作成を完了します。
- 新しいサービス アカウントの操作メニューをクリックし、[鍵を管理] を選択します。
- [鍵を追加] プルダウン メニューをクリックして、[新しい鍵を作成] をクリックします。
-
鍵のタイプが JSON であることを確認し、[作成] をクリックします。
秘密鍵ファイルがマシンにダウンロードされます。秘密鍵ファイルは、別の場所に移動できます。安全な場所に鍵ファイルを保管してください。
Compute Engine インスタンスが Cloud SQL インスタンスとは異なるプロジェクトにある場合、そのサービス アカウントに Cloud SQL インスタンスを含むプロジェクトに対する適切な権限があることを確認します。
- Google Cloud Console の Compute Engine インスタンスの一覧に移動します。
- 必要に応じて、Compute Engine インスタンスに関連付けられたプロジェクトを選択します。
- Compute Engine インスタンスを選択してプロパティを表示します。
- Compute Engine インスタンスのプロパティで、サービス アカウントの名前をコピーします。
- Google Cloud Console の [IAM と管理] ページに移動します。
- Cloud SQL インスタンスを含むプロジェクトを選択します。
- サービス アカウント名を検索します。
-
サービス アカウントがすでに存在し、そのアカウントに
cloudsql.instances.connect
権限を含むロールが割り当てられている場合は、ステップ 4 に進みます。役割
Cloud SQL Client
、Cloud SQL Editor
、Cloud SQL Admin
は、従来のプロジェクト役割Editor
やOwner
と同様に、必要な権限を提供します。 - それ以外の場合、[追加] をクリックしてサービス アカウントを追加します。
[プリンシパルの追加] ダイアログで、サービス アカウントの名前を指定し、
cloudsql.instances.connect
権限を含むロールを選択します(Cloud SQL の事前定義されたロールのうち、閲覧者以外のロールはこの条件に当てはまります)。または、[プロジェクト] > [編集者] の順に選択して、基本的な編集者のロールを使用することもできますが、編集者のロールには Google Cloud 全体に対する権限が含まれています。
これらの役割が表示されない場合、Google Cloud ユーザーに
resourcemanager.projects.setIamPolicy
権限がない可能性があります。権限を確認するには、Google Cloud Console の IAM ページにアクセスし、ご自分のユーザー ID を検索します。- [追加] をクリックします。
指定したロールを持つサービス アカウントが表示されます。
3. Compute Engine インスタンスに対するターミナル接続を開きます。
インスタンスのオペレーティング システムに応じて適切な手順に沿って操作します。
- Linux の場合、Linux インスタンスへの接続をご覧ください。
- Windows の場合、Windows インスタンスへの接続をご覧ください。
Compute Engine インスタンスが RHEL または CentOS 公開イメージを実行する場合、SELinux によりプロキシ接続がブロックされることがあります。これが発生した場合、SELinux 機能を構成して接続が許可されるようにする必要があります。
RHEL の SELinux に関する詳細については、RHEL ドキュメントをご覧ください。CentOS の SELinux に関する詳細については、CentOS ドキュメントをご覧ください。
4. Compute Engine インスタンスに PSQL クライアントがまだインストールされていない場合は、インストールします。
Debian、Ubuntu
PSQL クライアントをパッケージ マネージャーから次のようにインストールします。
sudo apt-get update sudo apt-get install postgresql-client
CentOS / RHEL
PSQL クライアントをパッケージ マネージャーから次のようにインストールします。
sudo yum install postgresql
openSUSE
PSQL クライアントをパッケージ マネージャーから次のようにインストールします。
sudo zypper install postgresql
他のプラットフォーム
- ご使用のプラットフォームに対応する PostgreSQL Core Distribution を、PostgreSQL のダウンロード ページからダウンロードします。
Core Distribution には、PSQL クライアントが含まれています。 - ダウンロード ページの指示に沿って、PostgreSQL データベースをインストールします。
5. Cloud SQL Auth Proxy を Compute Engine インスタンスにインストールします。
Linux 64 ビット
- Cloud SQL Auth Proxy をダウンロードします。
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.1/cloud-sql-proxy.linux.amd64
- Cloud SQL Auth Proxy を動作可能にします。
chmod +x cloud-sql-proxy
Linux 32 ビット
- Cloud SQL Auth Proxy をダウンロードします。
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.1/cloud-sql-proxy.linux.386
curl
コマンドが見つからない場合は、sudo apt install curl
を実行してダウンロード コマンドを繰り返します。- Cloud SQL Auth Proxy を実行可能にします。
chmod +x cloud-sql-proxy
Windows 64 ビット
https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.1/cloud-sql-proxy.x64.exe を右クリックして [名前を付けてリンク先を保存] を選択し、Cloud SQL Auth Proxy をダウンロードします。ファイル名をcloud-sql-proxy.exe
に変更します。Windows 32 ビット
https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.1/cloud-sql-proxy.x86.exe を右クリックして [名前を付けてリンク先を保存] を選択し、Cloud SQL Auth Proxy をダウンロードします。ファイル名をcloud-sql-proxy.exe
に変更します。Cloud SQL Auth Proxy Docker イメージ
Cloud SQL Auth Proxy には、distroless
、alpine
、buster
など、さまざまなコンテナ イメージがあります。デフォルトの Cloud SQL Auth Proxy コンテナ イメージでは、シェルを含まない distroless
を使用します。シェルまたは関連ツールが必要な場合は、alpine
または buster
を基盤とするイメージをダウンロードします。詳細については、Cloud SQL Auth Proxy コンテナ イメージをご覧ください。
次のコマンドを使用して、ローカルマシンに最新のイメージを Docker で pull できます。
docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.14.1
その他の OS
ここに記載されていないその他のオペレーティング システムの場合は、ソースから Cloud SQL Auth Proxy をコンパイルできます。6. 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 は、デフォルトでは localhost
(127.0.0.1
)でリッスンします。したがって、インスタンスに --port PORT_NUMBER
を指定すると、ローカル接続は 127.0.0.1:PORT_NUMBER
になります。
また、ローカル接続に別のアドレスを指定することもできます。たとえば、ローカル接続用に Cloud SQL Auth Proxy が 0.0.0.0:1234
でリッスンする方法を次に示します。
./cloud-sql-proxy --address 0.0.0.0 --port 1234 INSTANCE_CONNECTION_NAME
INSTANCE_CONNECTION_NAME をコピーします。これは、Google Cloud コンソールのインスタンスの [概要] ページに表示されます。また、次のコマンドで確認することもできます。
gcloud sql instances describe INSTANCE_NAME --format='value(connectionName)'
例: myproject:myregion:myinstance。
- インスタンスにパブリック IP とプライベート IP の両方が構成されている場合に、Cloud SQL Auth Proxy によってプライベート IP アドレスが使用されるようにするには、Cloud SQL Auth Proxy の起動時に次のオプションを指定する必要があります。
--private-ip
- サービス アカウントを使用して Cloud SQL Auth Proxy を認証する場合は、サービス アカウントの作成時に作成された秘密鍵ファイルのクライアント マシン上の場所を記録しておきます。
- Cloud SQL Auth Proxy を起動します。
有効な Cloud SQL Auth Proxy の呼び出し文字列:
- Cloud SDK 認証を使用する場合:
指定されたポートは、ローカル データベース サーバーなどがまだ使用していないものにする必要があります。./cloud-sql-proxy --port 5432 INSTANCE_CONNECTION_NAME
- サービス アカウントを使用して、インスタンス接続の名前を明示的に指定する場合(本番環境用に推奨):
./cloud-sql-proxy \ --credentials-file PATH_TO_KEY_FILE INSTANCE_CONNECTION_NAME &
Cloud SQL Auth Proxy オプションの詳細については、Cloud SQL Auth Proxy の認証オプションをご覧ください。
- Cloud SDK 認証を使用する場合:
Unix ソケット
Cloud SQL Auth Proxy は Unix ソケットでリッスンできます。これは、フォルダを使用して同じホスト上で動作している 2 つのプロセス間の通信を管理するための Posix 標準のメカニズムです。Unix ソケットを使用する利点は、セキュリティが向上し、レイテンシが低くなることです。ただし、外部マシンから Unix ソケットにはアクセスできません。
Unix ソケットを作成して使用するには、ターゲット ディレクトリが存在し、Cloud SQL Auth Proxy とアプリケーションの両方に読み取りと書き込みのアクセス権が付与されている必要があります。
INSTANCE_CONNECTION_NAME をコピーします。これは、Google Cloud コンソールのインスタンスの [概要] ページに表示されます。また、次のコマンドで確認することもできます。
gcloud sql instances describe INSTANCE_NAME --format='value(connectionName)'
例: myproject:myregion:myinstance。
- Cloud SQL Auth Proxy ソケットを格納するディレクトリを作成します。
sudo mkdir /cloudsql; sudo chmod 777 /cloudsql
- サービス アカウントを使用して Cloud SQL Auth Proxy を認証する場合は、サービス アカウントの作成時に作成された秘密鍵ファイルのクライアント マシン上の場所を記録しておきます。
- 新しい Cloud Shell ターミナル ウィンドウを開き、Cloud SQL Auth Proxy を起動します。
有効な Cloud SQL Auth Proxy の呼び出し文字列:
- Google Cloud SDK 認証を使用する:
./cloud-sql-proxy --unix-socket /cloudsql INSTANCE_CONNECTION_NAME &
- サービス アカウントを使用する:
./cloud-sql-proxy --unix-socket /cloudsql --credentials-file PATH_TO_KEY_FILE INSTANCE_CONNECTION_NAME &
専用の Cloud Shell ターミナルで Cloud SQL Auth Proxy を起動して、その出力を他のプログラムからの出力と混同せずにモニタリングできるようにします。
Cloud SQL Auth Proxy オプションの詳細については、Cloud SQL Auth Proxy の認証オプションをご覧ください。
- Google Cloud SDK 認証を使用する:
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:/path/to/service-account-key.json \\ -p 127.0.0.1:5432:5432 \\ gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.14.1 \\ --address 0.0.0.0 --port 5432 \\ --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 がローカルホストの外部に公開されないように、常に -p に 127.0.0.1
の接頭辞を指定します。インスタンス パラメータに含まれる「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.14.1 --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 メタデータを使用して接続対象のインスタンスを動的に決定することもできます。Cloud SQL Auth Proxy パラメータについての詳細をご覧ください。
7. psql セッションを開始します。
使用する接続文字列は、TCP ソケット、Unix ソケット、Docker のいずれを使用して Cloud SQL Auth Proxy を開始したかによって異なります。
TCP ソケット
- psql クライアントを起動します。
psql "host=127.0.0.1 sslmode=disable dbname=DB_NAME user=USERNAME"
sslmode
パラメータがdisable
に設定されていても、Cloud SQL Auth Proxy では暗号化された接続が提供されます。TCP ソケットを使用して接続する場合、Cloud SQL Auth Proxy には
127.0.0.1
経由でアクセスします。 - プロンプトが表示されたら、パスワードを入力します。
- psql のプロンプトが表示されます。
Unix ソケットの使用
- psql クライアントを起動します。
psql "sslmode=disable host=/cloudsql/INSTANCE_CONNECTION_NAME dbname=DB_NAME user=USERNAME"
sslmode
パラメータがdisable
に設定されていても、Cloud SQL Auth Proxy では暗号化された接続が提供されます。 - パスワードを入力します。
- psql のプロンプトが表示されます。
お困りの場合、プロキシのトラブルシューティングについては、Cloud SQL Auth Proxy 接続のトラブルシューティングまたは Cloud SQL のサポートページをご覧ください。
次のステップ
- Cloud SQL Auth Proxy の接続に関する問題のトラブルシューティングについてのヘルプを参照します。
- ユーザーとデータベースを作成します。
- プライベート IP の詳細について確認します。
- アプリケーションからインスタンスに接続するためのオプションについて確認します。
- PSQL クライアントについて確認します。
- サポート用オプションについて確認します。