MacでAWS RDSのMySQLデータベース構築したよ

##参考サイト

まず、本件はこちらの方々の記事のいいところ取りです。
皆様の記事がなければ、ここまでできませんでした。
ありがとうございます。

- [AWSで基本的なサーバー環境を構築してみました。](https://dev.classmethod.jp/articles/sales-rds-ec2-session/)
- [【初心者向け】営業がVPC作成からEC2インスタンス構築までやってみました](https://dev.classmethod.jp/articles/sales-create-ec2/)

<BR>

では、はじめます。

##VPCまわり
###VPC作成
VPCクリック
[![Image from Gyazo](https://i.gyazo.com/0f09d99e261b8ca61c76f1b9965835d8.png)](https://gyazo.com/0f09d99e261b8ca61c76f1b9965835d8)

VPC作成
[![Image from Gyazo](https://i.gyazo.com/2c16c1be376704dbc627dc8dff7c726f.png)](https://gyazo.com/2c16c1be376704dbc627dc8dff7c726f)

VPCの設定
名前タグ：好きな名前
IPv4 CIDR ブロック : 10.0.0.0/16を利用
[![Image from Gyazo](https://i.gyazo.com/c6c4b2a77b119e00959868406855a754.png)](https://gyazo.com/c6c4b2a77b119e00959868406855a754)


###サブネット作成
[サブネット] > [サブネットの作成]
[![Image from Gyazo](https://i.gyazo.com/9ade1cae42b1f156b776a7a7885cb2ae.png)](https://gyazo.com/9ade1cae42b1f156b776a7a7885cb2ae)

VPC ID : さっき作ったVPC
[![Image from Gyazo](https://i.gyazo.com/697932354f07baf71d4409091139d620.png)](https://gyazo.com/697932354f07baf71d4409091139d620)

[![Image from Gyazo](https://i.gyazo.com/8e81b728efa5c40cb4d42f173fa232b0.png)](https://gyazo.com/8e81b728efa5c40cb4d42f173fa232b0)

サブネット名:任意の名前
アベイラビリティーゾーン：任意の場所
IPv4 CIDR ブロック：　10.0.0.0/24

###ルートテーブル作成
[ルートテーブル] > [ルートテーブルを作成]
[![Image from Gyazo](https://i.gyazo.com/5b06f9033330047ec85a5e1beb2f22d2.png)](https://gyazo.com/5b06f9033330047ec85a5e1beb2f22d2)

ルートテーブル設定
[![Image from Gyazo](https://i.gyazo.com/822c80f426a7d77c3b34ce2e71f11d68.png)](https://gyazo.com/822c80f426a7d77c3b34ce2e71f11d68)

名前：任意の名前
VPC: 　さっき作ったVPC

###インターネットゲートウェイ作成
[インターネットゲートウェイ] > [インターネットゲートウェイの作成]
[![Image from Gyazo](https://i.gyazo.com/c1561264a34f493d39c34570e0f58d1d.png)](https://gyazo.com/c1561264a34f493d39c34570e0f58d1d)

名前タグ：任意
[![Image from Gyazo](https://i.gyazo.com/437cc9ac9ff783400e0b02fbb65f9397.png)](https://gyazo.com/437cc9ac9ff783400e0b02fbb65f9397)

アクション > VPCとアタッチ
[![Image from Gyazo](https://i.gyazo.com/f500f845279275ade404250f24a84aa9.png)](https://gyazo.com/f500f845279275ade404250f24a84aa9)

アタッチするVPSを選ぶ
[![Image from Gyazo](https://i.gyazo.com/1ffea7372f8d7cc83b860310e1900b01.png)](https://gyazo.com/1ffea7372f8d7cc83b860310e1900b01)

[ルートテーブル]　
> 該当のルートテーブルをチェック
> [ルートを編集]
[![Image from Gyazo](https://i.gyazo.com/1b3dd1261a3ebf4c42ddf3cf30e5bf81.png)](https://gyazo.com/1b3dd1261a3ebf4c42ddf3cf30e5bf81)

[add Route]
送信先: 0.0.0.0/0
TARGET: 作成したIGWを選択

[![Image from Gyazo](https://i.gyazo.com/b0237a7b24bc865b6146bbafa0117154.png)](https://gyazo.com/b0237a7b24bc865b6146bbafa0117154)

サブネットにルートテーブルを紐付け
サブネット　
＞　さっき作ったサブネットをチェック
＞　ルートテーブルタブ
＞　ルートテーブルの関連付けを編集
[![Image from Gyazo](https://i.gyazo.com/294be2fcf6fba35bc5fcd01465cddc71.png)](https://gyazo.com/294be2fcf6fba35bc5fcd01465cddc71)

今回作ったルートテーブルを選択
[![Image from Gyazo](https://i.gyazo.com/952e31b08a6408cdfb3c65049a501140.png)](https://gyazo.com/952e31b08a6408cdfb3c65049a501140)


##EC2構築
コンソールからEC2の管理画面 > インスタンス

[![Image from Gyazo](https://i.gyazo.com/897738d596cde48dc25444720c629706.png)](https://gyazo.com/897738d596cde48dc25444720c629706)

インスタンスを起動
[![Image from Gyazo](https://i.gyazo.com/d9a397baa8f8e46ab86ce86104fcd093.png)](https://gyazo.com/d9a397baa8f8e46ab86ce86104fcd093)

AMIの選択。
無料利用枠にチェック
＞ Linux2 AMI(64bit)

[![Image from Gyazo](https://i.gyazo.com/fd8cec445df5c3ba01980376217cedac.png)](https://gyazo.com/fd8cec445df5c3ba01980376217cedac)

[![Image from Gyazo](https://i.gyazo.com/dadaa9d648260f1978bd210fef70cb25.png)](https://gyazo.com/dadaa9d648260f1978bd210fef70cb25)

[![Image from Gyazo](https://i.gyazo.com/ead321018be479fbb975e70c77eeece9.png)](https://gyazo.com/ead321018be479fbb975e70c77eeece9)[![Image from Gyazo](https://i.gyazo.com/2d02ecb6702ec374d40c26b99daed812.png)](https://gyazo.com/2d02ecb6702ec374d40c26b99daed812)


[![Image from Gyazo](https://i.gyazo.com/c796482b574db1175e56437eddea98d7.png)](https://gyazo.com/c796482b574db1175e56437eddea98d7)

任意だけど　タグの追加
[![Image from Gyazo](https://i.gyazo.com/41bef8506265957538ba237a6c19bb7f.png)](https://gyazo.com/41bef8506265957538ba237a6c19bb7f)

一番下は [すべてのICMP - IPv4]

[![Image from Gyazo]
(https://i.gyazo.com/ddf745d4609f3c28bae5b32e04eae9e2.png)](https://gyazo.com/ddf745d4609f3c28bae5b32e04eae9e2)

起動
[![Image from Gyazo](https://i.gyazo.com/91abe903de683a0aaaea4a0e2137a754.png)](https://gyazo.com/91abe903de683a0aaaea4a0e2137a754)

[![Image from Gyazo](https://i.gyazo.com/71a24aae7c90fbd5aa77d28dc2a798ab.png)](https://gyazo.com/71a24aae7c90fbd5aa77d28dc2a798ab)


###EC2へのSSH接続の確認
インスタンス状態が 実行中　になってから。
IPv4パブリックIPをコピー
[![Image from Gyazo](https://i.gyazo.com/d52a47a7824fe20467f8976e91b75cbb.png)](https://gyazo.com/d52a47a7824fe20467f8976e91b75cbb)

ターミナル画面
ping + IPアドレス 入力し、
次の画面が表示されれば接続準備はOK

```
$ ping 13.230.153.4
PING 13.230.153.4 (13.230.153.4): 56 data bytes
64 bytes from 13.230.153.4: icmp_seq=0 ttl=235 time=71.973 ms
64 bytes from 13.230.153.4: icmp_seq=1 ttl=235 time=58.444 ms
64 bytes from 13.230.153.4: icmp_seq=2 ttl=235 time=98.557 ms
64 bytes from 13.230.153.4: icmp_seq=3 ttl=235 time=308.163 ms
64 bytes from 13.230.153.4: icmp_seq=4 ttl=235 time=186.163 ms
```

SSHの接続確認
先ほど作成したpemキーを.sshフォルダに移動
次のコマンドの手順で入力し、次の結果が表示されればEC2への接続が完了

```
$ mv Downloads/EC2-test.pem .ssh/      #pemキーを.sshフォルダに移動                          
$ sudo chmod 600 ~/.ssh/EC2-test.pem　   #指定している鍵の権限が広すぎるため変更
$ ssh -i ~/.ssh/EC2-test.pem ec2-user@13.230.153.4　　#pemキーとパブリックIPを使用

The authenticity of host '13.230.153.4 (13.230.153.4)' can't be established.
ECDSA key fingerprint is SHA256:XXXXXXXXXXXXXXXXXX.
Are you sure you want to continue connecting (yes/no/[fingerprint])?  
#ここは yesで回答　（未知のホスト鍵の場合こんな質問がある）


       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-10-0-0-200 ~]$

```


##RDS設定
###DB用のセキュリティグループの作成
DBへのアクセスは既存のEC2のみアクセスするように設定。
[EC2]>[セキュリティグループ]>[セキュリティグループの作成]

[![Image from Gyazo](https://i.gyazo.com/c2b2ddacfc2f917be632715b038867b5.png)](https://gyazo.com/c2b2ddacfc2f917be632715b038867b5)

セキュリティグループ名、説明、EC2があるVPCを設定
インバウンドルール
・タイプ：　MYSQL/Aurora
・ソース：　EC2のセキュリティグループ

[![Image from Gyazo](https://i.gyazo.com/7bdabb1b78b2f9d58c280cfeba8545c8.png)](https://gyazo.com/7bdabb1b78b2f9d58c280cfeba8545c8)


###DB用のサブネットの作成

RDSを利用するには、異るAZに属するサブネット2つを用意する必要があるので、DB用のサブネットを2つ作成し、この2つのサブネットは「1a」「1c」のAZを指定。
CIDRブロックの範囲は使用済みの数値は指定できない。

VPC > 
サブネット > サブネットを作成

AZ(1a）のサブネットを作る
[![Image from Gyazo](https://i.gyazo.com/2ec26adc2427d9be845565d38e3ac954.png)](https://gyazo.com/2ec26adc2427d9be845565d38e3ac954)

[![Image from Gyazo](https://i.gyazo.com/fe774676a27d8b0a3f1cdea147fd9dee.png)](https://gyazo.com/fe774676a27d8b0a3f1cdea147fd9dee)

AZ(1c)のサブネットを作る
[![Image from Gyazo](https://i.gyazo.com/a72894c6cccb9585ca5c65f7c6b01fd4.png)](https://gyazo.com/a72894c6cccb9585ca5c65f7c6b01fd4)

[![Image from Gyazo](https://i.gyazo.com/d96144ae640143d36864791a506a29cd.png)](https://gyazo.com/d96144ae640143d36864791a506a29cd)





###DB用のサブネットグループの作成

RDS > サブネットグループ > DB サブネットグループの作成

[![Image from Gyazo](https://i.gyazo.com/53ef9f7fbd46e83e5b6f2123cc78f0e1.png)](https://gyazo.com/53ef9f7fbd46e83e5b6f2123cc78f0e1)

名前、説明、VPCやサブネットはEC2のあるところを選択し作成します。
[![Image from Gyazo](https://i.gyazo.com/c410ee0c2455a03cbd5556c176f38e1c.png)](https://gyazo.com/c410ee0c2455a03cbd5556c176f38e1c)
[![Image from Gyazo](https://i.gyazo.com/d030fb64ba8880dcf637543a93f59e42.png)](https://gyazo.com/d030fb64ba8880dcf637543a93f59e42)


##データベースの作成
RDS > データベース > データベースの作成
[![Image from Gyazo](https://i.gyazo.com/7206f84e13576ff75206757cb9928e51.png)](https://gyazo.com/7206f84e13576ff75206757cb9928e51)


[![Image from Gyazo](https://i.gyazo.com/0d4024abef4502aa08bada720b431852.png)](https://gyazo.com/0d4024abef4502aa08bada720b431852)
[![Image from Gyazo](https://i.gyazo.com/6f64ad2d911ed9144dbd3bdb1f38a332.png)](https://gyazo.com/6f64ad2d911ed9144dbd3bdb1f38a332)
[![Image from Gyazo](https://i.gyazo.com/958d891a7a849a14fa1e772b6d0e0f34.png)](https://gyazo.com/958d891a7a849a14fa1e772b6d0e0f34)

[![Image from Gyazo](https://i.gyazo.com/152a837a8034e3672d605628970eac30.png)](https://gyazo.com/152a837a8034e3672d605628970eac30)
[![Image from Gyazo](https://i.gyazo.com/30c4043544450a1ff959f117b8b2f4f0.png)](https://gyazo.com/30c4043544450a1ff959f117b8b2f4f0)

あとはデフォルトどおりに
一番下にある「データベースの作成」をクリック


###RDSへ接続

まずEC2に接続

```
$ssh -i ~/.ssh/EC2Testkey.pem ec2-user@13.230.153.4　　#EC2接続

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-10-0-0-200 ~]$ sudo yum update -y  #EC2接続時に最初に実行

[ec2-user@ip-10-0-0-200 ~]$ sudo yum install mysql -y #MySQLのインストール

完了しました!
[ec2-user@ip-10-0-0-200 ~]$ 

```


AWSのコンソール画面に戻り、作成したRDSのエンドポイントをコピーします。
[![Image from Gyazo](https://i.gyazo.com/dd7b22cfeef0e941798e9fb5e2076c3d.png)](https://gyazo.com/dd7b22cfeef0e941798e9fb5e2076c3d)


```
$ mysql -h aws-test.XXXXXXXX.ap-northeast-1.rds.amazonaws.com -u admin -p  #RDSのエンドポイントとRDS作成時のマスターユーザ名（admin）を使用
Enter password:〇〇〇〇〇〇〇〇     #RDS作成時のパスワード（いつものパスワードではないので注意）
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 8.0.20 Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> 　#exitで抜けます
```

以上、MySQL構築できました！


こんな感じでデータベースを作ります。

```
$ SET time_zone = 'Asia/Tokyo';
$ CREATE DATABASE project;
$ USE project;
$ CREATE TABLE users (id INT AUTO_INCREMENT, userId TEXT, branch TEXT, name TEXT, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id)) DEFAULT CHARSET=utf8;

$ SHOW tables;
+-------------------+
| Tables_in_project |
+-------------------+
| users             |
+-------------------+
1 row in set (0.01 sec)

$ DESCRIBE users;
+------------+-----------+------+-----+-------------------+-----------------------------------------------+
| Field      | Type      | Null | Key | Default           | Extra                                         |
+------------+-----------+------+-----+-------------------+-----------------------------------------------+
| id         | int       | NO   | PRI | NULL              | auto_increment                                |
| userId     | text      | YES  |     | NULL              |                                               |
| branch     | text      | YES  |     | NULL              |                                               |
| name       | text      | YES  |     | NULL              |                                               |
| created_at | timestamp | NO   |     | CURRENT_TIMESTAMP | DEFAULT_GENERATED                             |
| updated_at | timestamp | NO   |     | CURRENT_TIMESTAMP | DEFAULT_GENERATED on update CURRENT_TIMESTAMP |
+------------+-----------+------+-----+-------------------+-----------------------------------------------+

$ INSERT INTO users (userID, branch, name) values ('000000','本店','山田太郎');

$ select * from users;
+----+--------+--------+--------------+---------------------+---------------------+
| id | userId | branch | name         | created_at          | updated_at          |
+----+--------+--------+--------------+---------------------+---------------------+
|  1 | 000000 | 本店   | 山田太郎     | 2021-06-13 05:11:59 | 2021-06-13 05:11:59 |
+----+--------+--------+--------------+---------------------+---------------------+

```