Edited at

GCP Cloud SQLにプロキシ経由で繋ぐ

More than 1 year has passed since last update.

Google Cloud Platform(以下GCP)のCloud SQLにアクセスする際、次の二つの方法があります。


  1. 特定IPアドレスからの接続を許可する

  2. 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を有効化しておきます。

Enable an API.png


  1. 上記の画面でプロジェクトを選択して、Continueします。これで、有効化完了です。

  2. 次の画面で、認証情報の作成ボタン(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のボタンをクリックします。


  1. MySQLを選択

  2. MySQL Second Generationを選択

  3. インスタンスの設定


    • Instance ID: 適当な名前。ここではmy-database

    • Region: asia-northeast1

    • Machine type: お試しならdb-f1-microdb-g1-smallあたり

    • Root password: Generateボタンをクリックしてメモっておく

    • ほかの項目は、任意で変更



インスタンスの作成には数分かかります。


プロキシの起動

先ほどプロキシをインストールしたフォルダに、移動します。事前に適当な名前(ここでは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の場合の例です。

Querious.png


  • User: root (あるいは、ほかの設定済みのアカウント)

  • Password: インスタンス作成時にメモしたもの

  • Socket Path: /Users/<ユーザ名>/cloudsql/my-project:asia-northeast1:my-database

おつかれさまでした。以上で、無事、開発環境からデータベースにアクセスできたはずです。