Google Cloud Platform(以下GCP)のCloud SQLにアクセスする際、次の二つの方法があります。
- 特定IPアドレスからの接続を許可する
- Cloud SQL Proxyを使う
前者が使えるのは、AWSなどの別のクラウドから接続する、あるいは社内LANから接続するなどのケースだと思います。本稿では、開発環境からアクセスする場合に便利な、後者(プロキシの使い方)について扱います。(というか自分用のメモ)
- 対象読者: とりあえずGCPにアカウント持ってる/作ろうとしている
- 使いどき: Cloud SQLを試してみたい/開発環境から繋げてみたい
下準備
プロジェクトの作成
もし、GCP上での作業が初めてであればプロジェクトを事前に作成しておく必要があります。コンソールにアクセスし、ドキュメントを参照して、作成しておいてください。
Cloud SDK
SDKが必要です。手元の環境にない場合は、こちらからSDKをダウンロードして、インストールしておきましょう。
初めて使う場合は、次のコマンドでログインしましょう。自動的にブラウザが開いて、Googleアカウントでの認証が求められます。
$ gcloud auth login
ログインに成功したら、次のコマンドで確かめておきます。
$ gcloud auth list
SDKの認証
GCPのドキュメントを見ていると、上記だけで使えそうな記述もあるのですが、実際には次の手順が必要です。上記のログインの場合と同様に、ブラウザが開いてGoogleアカウントでの認証が求められます。
$ gcloud auth application-default login
APIの有効化
こちらにアクセスして、Cloud SQL APIを有効化しておきます。
- 上記の画面でプロジェクトを選択して、
Continue
します。これで、有効化完了です。 - 次の画面で、認証情報の作成ボタン(
Go to credentials
)が表示されますが、ここでは特に作成の必要がないので、そのままブラウザを閉じてOKです。
プロキシのインストール
適当な場所(ここでは、自分のホームディレクトリ/Users/<ユーザ名>
)に移動して、次のコマンドでプログラムをダウンロードします。(以下はMacの場合です。他の環境についてはドキュメント参照)
$ curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64
実行権限を付与しておきます。
$ chmod +x cloud_sql_proxy
※よく使うのであれば、パスも通しておきましょう。
MySQLに接続
Cloud SQLのインスタンスを作成
Cloud SQLにアクセスして、CREATE INSTANCE
のボタンをクリックします。
- MySQLを選択
- MySQL Second Generationを選択
- インスタンスの設定
- Instance ID: 適当な名前。ここでは
my-database
- Region:
asia-northeast1
- Machine type: お試しなら
db-f1-micro
かdb-g1-small
あたり - Root password:
Generate
ボタンをクリックしてメモっておく - ほかの項目は、任意で変更
- Instance ID: 適当な名前。ここでは
インスタンスの作成には数分かかります。
プロキシの起動
先ほどプロキシをインストールしたフォルダに、移動します。事前に適当な名前(ここではcloudsql
)でフォルダを作っておいてください。
次のコマンドで、プロキシが起動します。
$ ./cloud_sql_proxy -dir=cloudsql -instances=my-project:asia-northeast1:my-database
なお、インスタンスの指定は-instances=<プロジェクトID>:<リージョン>:<データベースのインスタンスID>
の書式で行います。適宜書き換えてください。
上記では、/Users/<ユーザ名>/cloudsql/my-project:asia-northeast1:my-database
がソケットのパスになります。
※なお、上記のUnixソケットを使う方法のほか、いくつかの方式があります。詳しくは、プロキシのドキュメント参照。
MySQLクライアントから接続
以下は、Queriousの場合の例です。
- User:
root
(あるいは、ほかの設定済みのアカウント) - Password: インスタンス作成時にメモしたもの
- Socket Path:
/Users/<ユーザ名>/cloudsql/my-project:asia-northeast1:my-database
おつかれさまでした。以上で、無事、開発環境からデータベースにアクセスできたはずです。