この記事は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は現状不要かなと思ってます。
前提条件
参考手順と作業に必要な事前準備は下記記事となっておりますので、ご覧になっていない方は参照頂けると幸いです。
また、クライアント環境はCloudShellではなく、macOSのターミナルとなっている点ご承知置き下さい。
CloudSQL Admin 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. NAME DATABASE_VERSION LOCATION TIER PRIMARY_ADDRESS PRIVATE_ADDRESS STATUS tutorial-sql-instance MYSQL_5_7 asia-northeast1-a db-f1-micro (GCPで発行されたIP) - RUNNABLEhttps://sqladmin.googleapis.com/sql/v1beta4/projects/test-wordpress1/instances/tutorial-sql-instance
※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の概要いついては下記記事を参考にして下さい。
作業用ディレクトリに移動し、下記コマンドを実行します。
※MacOS(64bit)の場合の例になります。
curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64 chmod +x cloud_sql_proxy
CloudSQLのサービスアカウントとロールの付与、認証鍵の作成
サービスアカウントの作成
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インスタンスの作成作業は終わりです。