CloudSQLのSQLクライアント接続

CloudSQLに「DBeaver」「Sequel Ace(Sequel Pro)」「OSqlEdit」等のSQLクライアントツールから接続する方法を紹介します。
CloudSQLは基本的にProxy経由で接続する必要がありますが、TemPlatを使った開発ではサーバーにProxyのクライアントがインストールされていますので、比較的簡単に接続することが可能です。

接続手順

1. サーバーのソースコードをクローン(取得)する

まず初めに、サーバーのソースコードのクローン(取得)を行ってください。
クローン方法が分からない方は以下の記事に記載されていますので参考にしてください。
なお、ここでクローンするのは[プロジェクトID]-serverのソースコードのみで問題ありません。
ソースコードのクローン(取得)

また、今回はGoのProxyライブラリを利用してCloudSQLに接続するので、Goがインストールされていない場合はインストールを行ってください。

2. CloudSQLのインスタンス接続名を確認

GCPのコンソールからCloudSQLのインスタンス接続名を確認します。
CloudSQLのインスタンス接続名は取得したソースコードのsrc/app/env/.envファイル内に記載されています。

SERVER_ROOT/src/app/env/.env

# Cloud SQL Config
DB_PROTOCOL=cloudsql([CloudSQLのインスタンス接続名])
DB_USER=[ユーザー]
DB_PASS=[パスワード]
DB_NAME=stg
DB_OPTIONS=?parseTime=true&loc=Asia%2FTokyo

または、GCPのCloudSQL(SQL)を選択すると表示される一覧にも記載されています。

CloudSQLのインスタンス接続名を確認

3. ローカルでコマンドを実行する

はじめに、Goのmodをダウンロードするために、取得したソースコードのルートで以下のコマンドを実行します。
なお、既にサーバーをローカルで動かしている方は、modがダウンロードされているため、この手順は不要です。

export GOPATH=`pwd`
cd ./src/app
go mod download

次に、取得したソースコードのルートで以下のコマンドを実行します。
[CloudSQLのインスタンス接続名]に2.CloudSQLのインスタンス接続名を確認で取得したCloudSQLのインスタンス接続名を入力してください。

export GOPATH=`pwd`
cd ./src/app
go run ../../pkg/mod/github.com/\!google\!cloud\!platform/cloudsql-proxy@*/cmd/cloud_sql_proxy -instances=[CloudSQLのインスタンス接続名]=tcp:13306 -credential_file=secret.json

これにより、CloudSQLに接続するためのProxyが有効になります。
なお、この際利用しているサービスアカウント(認証情報)はサーバーが使用しているものと同一です。

4. SQLクライアントから接続する

上記で構築したProxy経由でCloudSQLにSQLクライアントから接続します。

接続するためのユーザーはGCPのCloudSQLから作成を行なっても良いですが、サーバーが使用しているユーザーと同一で問題なければ、サーバーが使用しているユーザーを使用することも出来ます。
サーバーが接続しているユーザーとパスワードはサーバーのソースコードのsrc/app/env/.envファイル内に記載されています。

SERVER_ROOT/src/app/env/.env

# Cloud SQL Config
DB_PROTOCOL=cloudsql([CloudSQLのインスタンス接続名])
DB_USER=[ユーザー]
DB_PASS=[パスワード]
DB_NAME=stg
DB_OPTIONS=?parseTime=true&loc=Asia%2FTokyo

ユーザーとパスワードが確認出来たら以下の接続情報で接続します。

Host127.0.0.1
Port13306
User上記で確認したユーザー
Password上記で確認したパスワード
CloudSQL接続情報

DBeaverの接続画面
GoLandの接続画面

以上でSQLクライアントからCloudSQLへの接続が完了です。