GAE+CloudeSQL+GCSでWordPressを構築する③(CloudSQLでMySQLインスタンスを作成)

この記事は約8分で読めます。

この記事はWordPressに必要なDBの作成についてのお話になります。

CloudSQLでMySQLインスタンスを作り、Cloud SQL ProxyでDBを操作してみたいという方にも当記事はお役立て頂けると思います。

当記事の作業の流れとして、

  • CloudSQL Admin APIの有効化
  • MySQLインスタンスを作成
  • MySQLインスタンスに root パスワードを設定
  • Cloud SQL Proxyをダウンロード
  • CloudSQLのサービスアカウントとロールの付与、認証鍵の作成
  • Cloud SQL ProxyでDBインスタンスに接続しスキーマとユーザーを作成

となります。

完成図は下記イメージとなります。

※赤枠が今回の作成範囲

今回の構成ではVPCは作成せず、デフォルトのVPCを利用する事にしました。

今後色々なリソースを追加し明確に通信制御をする必要が出た際にはVPCを作りMySQLインスタンスをVPC配下に入れる可能性がありますが、WordPressだけを運用するのであればVPCは現状不要かなと思ってます。

スポンサーリンク

前提条件

参考手順と作業に必要な事前準備は下記記事となっておりますので、ご覧になっていない方は参照頂けると幸いです。

GAE+CloudeSQL+GCSでWordPressを構築する①(参考手順と事前準備)
前回の記事でGAE+CloudSQLの構成でWordPressを構築する事としました。※構築の記事を投稿後にAMIMOTO AMIのWordPressを移行記事を書こうと思います。今回は参考にした手順と事前準備についてのお話となります...

また、クライアント環境はCloudShellではなく、macOSのターミナルとなっている点ご承知置き下さい。

スポンサーリンク

CloudSQL Admin APIを有効にする

GCPのリソース操作でCloud APIというREST APIが用意されています。
後述の手順でCloud SQL Proxyを利用しますが、CloudSQL Admin APIが有効になっていないとDBインスタンスに接続出来きないので有効化します。
1.GCPコンソール画面のメニュ->APIとサービスの順でメニュー表示を行い、「ダッシュボード」をクリックします。

2.「APIとサービスの有効化」をクリックします。

3.検索欄に「cloud sql admin」と入力し検索結果に表示された「CloudSQL Admin API」をクリックします。

4.「有効にする」をクリックします。

スポンサーリンク

MySQLインスタンスを作成

ターミナルより、下記コマンドを実行します。

gcloud sql instances create tutorial-sql-instance 
        --activation-policy=ALWAYS 
        --tier=db-f1-micro 
        --region=asia-northeast1

東京リージョンへインスタンス名:tutorial-sql-instance、マシンタイプ:db-f1-microを作成するという内容ですが、お好みの内容に適宜変更頂いて構いません。
作成が完了するとターミナルに下記内容が出力されます。

Creating Cloud SQL instance...done.
Created 
https://sqladmin.googleapis.com/sql/v1beta4/projects/test-wordpress1/instances/tutorial-sql-instance
. NAME DATABASE_VERSION LOCATION TIER PRIMARY_ADDRESS PRIVATE_ADDRESS STATUS tutorial-sql-instance MYSQL_5_7 asia-northeast1-a db-f1-micro (GCPで発行されたIP) - RUNNABLE

※PRIMARY_ADDRESSのアドレスは都度変わります。

スポンサーリンク

MySQLインスタンスのroot パスワードを設定

ターミナルより下記コマンドを実行します。

gcloud sql users set-password root --instance tutorial-sql-instance 
        --password [YOUR_SQL_ROOT_PASSWORD] 
        --host %

※[YOUR_SQL_ROOT_PASSWORD] に任意のパスワードを入力して下さい。

スポンサーリンク

Cloud SQL Proxyをダウンロード

CloudSQLへの接続はCloud SQL Proxyを利用します。

Cloud SQL Proxyの概要いついては下記記事を参考にして下さい。

Cloud SQL Auth Proxy について  |  Cloud SQL for MySQL  |  Google Cloud
AWSではセキュリティグループでDBインスタンスが所属するVPCに対しDBインスタンスのポートへの通信許可の設定を行った後に接続を行いますが、GCPではCloud SQL Proxyを利用しDBインスタンスに接続します。

作業用ディレクトリに移動し、下記コマンドを実行します。
※MacOS(64bit)の場合の例になります。

curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64
chmod +x cloud_sql_proxy
スポンサーリンク

CloudSQLのサービスアカウントとロールの付与、認証鍵の作成

Cloud SQL ProxyでDBインスタンスに接続するには、サービスアカウントの作成とロールの付与、認証鍵の作成を行う必要があります。
GCPコンソールからも対応可能ですが、この記事では全てコマンドで行う事とします。

サービスアカウントの作成

gcloud iam service-accounts create wp-db-user --display-name "wp-db-user"

※wp-db-userの箇所についてはお好みのアカウント名に変更して下さい。

サービスアカウントの確認

下記コマンドを実行します。

gcloud iam service-accounts list

出力結果からサービスアカウントが作成されている事を確認します。

NAME        EMAIL                                               DISABLED
wp-db-user  wp-db-user@test-wordpress1.iam.gserviceaccount.com  False

サービスアカウントにCloudSQLClientロールを付与

gcloud projects add-iam-policy-binding [プロジェクトID] --member serviceAccount:wp-db-user@test-wordpress1.iam.gserviceaccount.com --role roles/cloudsql.client

※この手順の[プロジェクトID]はtest-wordpress1となります。

認証鍵(jsonファイル)を作成

#gcloud iam service-accounts keys create [ファイル名].json --iam-account [サービスアカウント名]@[プロジェクトID].iam.gserviceaccount.com
gcloud iam service-accounts keys create key.json --iam-account wp-db-user@test-wordpress1.iam.gserviceaccount.com

lsコマンドで認証鍵ファイルが作成されている事を確認

-rwxr-xr-x  1 southwest  staff  12741524  5  3 22:56 cloud_sql_proxy
-rw-------  1 southwest  staff      2320  5  4 00:07 key.json

以上でCloud SQL Proxyが利用できるようになりました。
作成された認証鍵(jsonファイル)は今後も使いますので無くさないように保存して下さい
また公開されているリポジトリへアップロードしないよう十分注意してください

スポンサーリンク

Cloud SQL ProxyでDBインスタンスに接続しスキーマとユーザーを作成

1.Cloud SQL Proxyを実行します。

./cloud_sql_proxy -instances=test-wordpress1:asia-northeast1:tutorial-sql-instance=tcp:3306 -credential_file=key.json

2.別のターミナル画面を起動します。

3.起動した別ターミナル画面でスキーマとユーザーを作成します。

mysql -h 127.0.0.1 -u root --password=[YOUR_SQL_ROOT_PASSWORD]
mysql> create database tutorialdb;
mysql> create user 'tutorial-user'@'%' identified by '[YOUR_DATABASE_PASSWORD]';
mysql> grant all on tutorialdb.* to 'tutorial-user'@'%';
mysql> exit

※[YOUR_SQL_ROOT_PASSWORD] は前述で作成したDBインスタンスのrootパスワードになります。
※[YOUR_DATABASE_PASSWORD] には任意のパスワードを入力してください。

以上でDBインスタンスの作成作業は終わりです。