Cloud SQLは、2016.03.30現在ベータですが、パフォーマンスや機能が改善され価格も安い第2世代が利用可能になっています。
この記事では、第2世代から利用可能になった、Cloud SQL Proxyを利用し、ローカルPC (Mac OS X) のMySQL ClientからCloud SQLインスタンスへの接続を試した手順をまとめてみました。
外部ネットワークから接続する方法は、第1世代はIPを制限して接続を許可する方法のみでしたが、第2世代では、サーバーアカウントキーで認証してAPIを介して安全にデータベースへ接続できるようになっています。
第2世代は、AppEngineで利用できないなど制限がいくつかあります。
制限については、Google Cloud SQLとは?のCloud SQL Second Generation (ベータ)の制限で確認できます。
インスタンスの作成
Google Cloud SQLは、プロジェクトのメニュー[ストレージ]の[SQL]から利用できます。
初めて、利用する場合は、以下のように[インスタンスを作成]のボタンのみ表示されています。
※ 請求先アカウントを設定していないプロジェクトでは、左上に[課金を有効にする]ボタンが表示され、[インスタンスの作成]ボタンは表示されません。
お支払い情報を入力して請求先アカウントを設定する必要があります(無料試使用あり)。
[インスタンスを作成]ボタンをクリックしてインスタンスの作成を開始します。
[第2世代を選択]をクリックすると、次は、インスタンスの各種設定画面が表示されます。
[インスタンスID]をのみ入力して、[地域]と[ゾーン]はデフォルトのまま、お試しなので[マシンタイプ]は最小構成のdb-f1-micro
を選択しました。
後は、デフォルトのまま[作成]をクリックします。
インスタンスが作成が完了すると、インスタンスIDの左のアイコンがグリーンになります。
MySQL Clientで接続
インスタンスが作成できたので、MySQL Clientから接続してみます。
接続方法についての公式ドキュメントは、Connecting to Google Cloud SQL Using MySQL ClientおよびConfiguring access for the proxyになります。
rootユーザーのパスワードを変更
まず、インスタンスにアクセスするrootユーザーのパスワードを設定する必要があります。
インスタンスリストから作成したインスタンスを選択して詳細を開き、[アクセス制御]タブの[ユーザー]タブを選択します。
[rootのパスワードを変更]をクリックすると以下のポップアップが表示されます。
Cloud SQL Proxyをインストール
Installing the Cloud SQL Proxyを開き、手順にしたがってCloud SQL Proxyをインストールします。
Cloud SQL Proxyをダウンロードして、以下の手順を実行します。
Mac OS Xの場合
$ wget https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64
$ mv cloud_sql_proxy.darwin.amd64 cloud_sql_proxy
$ chmod +x cloud_sql_proxy
Ubuntuの場合
$ wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64
$ mv cloud_sql_proxy.linux.amd64 cloud_sql_proxy
$ chmod +x cloud_sql_proxy
Google Cloud SQL APIを有効化とサービスアカウントの作成
Google Cloud SQL APIを有効化します。
Enable the SQL Admin APIを開きます。
今回はCompute Engineは利用しないので、[いいえ]を選択して[必要な認証情報]をクリックします。
サービスアカウントの作成画面が表示されます。
※ APIの有効化は、[API Manager] > [概要]ページの[Google API]タブから[Google Cloud SQL API]を選択しても、有効化できます。
サービスアカウント名を入力して、キーのタイプはJSON
を選択して、[OK]をクリックします。
このキーは、Cloud SQL Proxyの起動時、コマンド オプションに指定するので、適当なディレクトリにダウンロードしておきます。
ダウンロードすると以下のメッセージが表示されるので[閉じる]をクリックします。
Cloud SQL Proxyの起動
Cloud SQL Proxyの起動コマンドオプションはいくつかありますが、Mac OS XではFUSEのセットアップが別途必要になるので、Installing the Cloud SQL Proxyの「Example proxy invocations and connection strings」に説明されている-instances
オプションを利用してみます。
$ sudo mkdir /cloudsql; sudo chmod 777 /cloudsql
$ ./cloud_sql_proxy -dir=/cloudsql -credential_file=/path/to/service-account-key.json -instances=<project name>:us-central1:mydb
2016/03/30 15:43:14 listenInstance: "<project name>:us-central1:mydb"
2016/03/30 15:43:14 Remove("/cloudsql/<project name>:us-central1:mydb") error: <nil>
2016/03/30 15:43:14 Open socket for "<project name>:us-central1:mydb" at "/cloudsql/<project name>:us-central1:mydb"
-instances
オプションに指定するインスタンス接続名は、インスタンスの詳細の[概要]タブで確認できます。
MySQL Clientからの接続
MySQL Clientでは、-S
オプションに/cloudsql/
を指定して接続します。
$ mysql -uroot -p -S /cloudsql/<project name>:us-central1:mydb
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3262
Server version: 5.6.29-google-log (Google)
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
接続完了です。
補足
チュートリアルに必要なコマンドのインストール homebrewを使用
$ brew install wget
$ brew install mysql --client-only