AmazonRDSで外部接続できるMysql環境構築

AmasonRDSにMysql環境を構築（無料利用枠）してみました。
あと、はまった内容も載せています。

こんな人にはいいかも？
・自分のパソコンにインストールしたくない。
・パソコンが壊れた場合、リカバリ作業をしたくない。
・別のパソコンと共有したい。
・お金を使いたくない。
・大容量じゃなくても大丈夫。
・一時的（１年以内）な利用で大丈夫。


忙しい方は、以下の項をどうぞ。
・3.セキュリティグループの作成
・7.パラメータグループの作成 
・9.再度データベースの作成

#参考
[[AWS]RDSにて外部サーバーからの接続を許可する](https://www.t3a.jp/blog/infrastructure/rds-outside-ok/)

#手順

##1.データベースの作成
「Amazon RDS」→「データベース」→「データベースの作成」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/f88c8b76-23a8-cfde-cf11-a94d8f3762d8.png)

##2.データベースの作成
赤枠の所を変更していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/f8b1dd5e-753e-fbdb-26d1-d664662a4b29.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/0472eb3b-04d9-264b-f641-94a12871fee3.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/8724b42f-eb7f-243b-2cc7-d74adbae5af1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/7fa9fb67-93ad-979a-625a-2f90b718fff4.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/6921e3aa-529e-0f34-4a65-668b94317772.png)
最後に「データベースの作成」

---
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/a25ab554-89dd-6dc1-a375-ad75ef0f0e83.png)
「ステータス」が「利用可能」になるまで待ちます・・。５～１０分位だった気がします。

##3.セキュリティグループの作成
「amazon EC2」→「セキュリティグループ」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/93bedcbc-0e9e-4d69-e2f8-2c628127d0b7.png)
「セキュリティグループの作成」を選択

---
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/a4fb6897-09ad-b01b-1802-065b7a1b8f71.png)
「セキュリティグループ名」「説明」を入力。（何でもよい）
「インバウンドルール」に「ルールを追加」で、ポートを「3306」、アクセス許可するIPアドレスを指定します。

---

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/f4856dba-3d1b-faa7-a865-bc4d2c46665d.png)
最後に「セキュリティグループの作成」

##4.セキュリティグループの適用
「Amazon RDS」→「データベース」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/99434cb1-1935-14f8-57fe-ca802bf6ae00.png)

対象のデータベースを選択して、「変更」

---
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/a7668870-cf51-4c7e-54f2-545aab4df5f8.png)
「セキュリティグループ」に先ほど作成した内容を選択します。

---

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/3849c48b-ece2-88da-c5d8-b4ca452ed5a6.png)
「すぐに適用」、「DBインスタンスの変更」

##5.接続確認
「A5SQL」で接続確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/42ce19e2-def5-eb7b-8593-8bb86d1ea59b.png)

・「ホスト名」は、エンドポイント
・ユーザID、パスワードは「1.データベースの作成」より。

#####エンドポイント
「amazonRDS」→「データベース」→作成したデータベースのリンクをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/bd645515-480a-3be8-8a0c-07785bbaa996.png)


#####パスワードを忘れた場合
上記の「4.セキュリティグループの適用」の手順を行い、
「セキュリティグループ」ではなく、「新しいマスターパスワード」を設定してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/c875ebbf-861f-eadb-e0fc-03c7eba92caa.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/2df76be0-1f0a-123a-a3a7-8584470f14e1.png)
接続できなければ、再度、１～４の手順をやり直してみてください。。

##6.Mysqlの設定（大文字・小文字区別）

テーブルを作成して、クエリを実行してみる。

```
select COUNT(*) from USER_MST
```

こんなエラーが表示される。。

```
#42S02Table 'xxxxxx.USER_MST' doesn't exist
```

「USER_MST」というテーブルが無い・・・？

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/96a5e2a0-8a65-f7fc-d84f-129a90c386da.png)

A5SQLを見てもあるんだけど・・。

テーブル名を小文字にすると、問題無し。。

```
select COUNT(*) from user_mst
```

---

原因は、「大文字・小文字」の区別が有効になっているからの模様。
以下、公式より。
[9.2.2 識別子の大文字と小文字の区別](https://dev.mysql.com/doc/refman/5.6/ja/identifier-case-sensitivity.html)

##7.パラメータグループの作成

通常であれば「my.cnf (linux) / my.ini (windows) 」の値を書き換えればよいのですが、
amazonRDSの場合は、「パラメータグループ」の書き換えになります。

---
「amazonRDS」→「パラメータグループ」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/0414b67e-444c-065b-1893-65a3d491d4aa.png)

「パラメータグループの作成」

---

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/1cd22f73-5270-7b82-5631-eb0efb54cb71.png)
「パラメータグループファミリー」→「mysql8.0」
「グループ名」「説明」に入力（なんでもよい）

最後に「作成」

---

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/ac3725b8-18d3-9f0b-38b7-e4df2dd72fc8.png)
出来上がったパラメータを選択

---

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/56550bca-99bb-db2a-83ab-bea471718855.png)
「lower_case_table_names」で絞り込んで、パラメータの値を「1」にする。
最後の「変更の保存」


##8.DBパラメータグループの適用

上記「4.セキュリティグループの適用」の手順を行い、
「セキュリティグループ」ではなく、「DBパラメータグループ」を作成した内容に変更。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/b6763e95-8ab9-17e7-b37c-8c9f79933f6d.png)

---

####で、ここではまる。。。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/3849c48b-ece2-88da-c5d8-b4ca452ed5a6.png)
「すぐに適用」、「DBインスタンスの変更」をしようとすると・・・



```
The parameter value for lower_case_table_names can't be changed for MySQL 8.0 DB instances
```

ググってヒットした記事↓
[Amazon RDS における MySQL の既知の問題と制限](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/MySQL.KnownIssuesAndLimitations.html)

「Amazon RDS DB インスタンスに使用する MySQL のパラメータの例外」の項を読んでも問題なさそうだけど・・。


#####再起動してみよう！
変更を破棄して、「停止」→「再起動」

```
Can only reboot db instances with state in: available, storage-optimization, incompatible-credentials, incompatible-parameters. Instance database has state: stopping
```

「停止」後、起動できなくなる。。。

https://aws.amazon.com/jp/premiumsupport/knowledge-center/rds-incompatible-parameters/
https://qiita.com/matsumoto_sp/items/4808576159c92f8916f5

「リセット」かサポート問い合わせ・・？
めんどくさそう。。

##9.再度データベースの作成

#####データベースを最初から作りました。

※Mysqlのバージョンがたまたま悪かったのかと思い、「8.0.20」にしています。
　赤枠がデフォルトからの変更点です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/54a41e0d-419f-4b79-e27c-b646dc30b7d1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/8a75211c-4356-79e7-8c66-66955ad235f3.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/89e0125c-5604-5a78-85d6-5ecdfef2955f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/952c121d-0b0e-10b6-22b6-665249a1814c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/f86e5459-6817-7acf-b0a5-40654eabdca2.png)

※「3.セキュリティグループの作成」「7.パラメータグループの作成 」で
既に「セキュリティグループ」と「パラメータグループ」を作成済みなので、他に操作は必要ありません。

##10.再度クエリの実行

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572933/16a3360f-2cfe-a7a8-04f7-a322706693ab.png)

####うまくいった！