【AWS】EC2とRDS（MySQL）を接続してみた

# はじめに

AWSのサービスについて色々学習してく中で、EC2からDBに接続するような構成は多々見ると思います。今回はEC2からRDS（MySQL）に接続する方法について記述していきます。

# 前提
EC2インスタンスは構築済みという前提で記述していきます。EC2はLinuxでインスタンスタイプはt2.microです。
また、様々な手順を一部省略して記載していきます。最低限コンソールを操作できる知識とスキルは持ち合わせているものとして記述していきます。


#セキュリティグループ作成
EC2⇒セキュリティグループ⇒セキュリティグループのを作成の順でクリックします。

**・セキュリティグループ名**
セキュリティグループの名前を設定します。任意の名前を入れていください。入力は必須です。

**・説明**
セキュリティグループの説明を入力します。

**・VPC**
どのVPCにセキュリティグループを作成するかを指定します。
今回は、EC2とRDSを同じVPC内に構築するので、その二つと同じVPCにしてください。

**・インバウンドルール**
RDSに対してどの通信を許可するかを指定します。今回はEC2からの接続のみ許可すれば良いので画像のように入力します。
ただ、IPアドレスの部分は各自のEC2のプライベートIPアドレスを入力してください。
![スクリーンショット 2021-12-30 16.00.40.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/797483/90f870f0-6e6f-a4e0-74b4-7bdcf242d1a9.jpeg)


#サブネットグループ作成
次にサブネットグループの作成を行います。
RDS⇒サブネットグループ⇒サブネットグループを作成の順でクリックしていきます。

**・名前**
サブネットグループの名前を設定します。入力は必須です。

**・説明**
サブネットグループの説明を入力します。

**・VPC**
どのVPCにセキュリティグループを作成するかを指定します。
今回は、EC2とRDSを同じVPC内に構築するので、その二つと同じVPCにしてください。
![スクリーンショット 2021-12-30 16.14.11.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/797483/9f4334dc-5577-72d0-a4f8-14389800477c.jpeg)

**・アベイラビリティゾーン**
マルチAZ構成にする場合は二つのAZに属したRDSを構築するため、AZ-aのとAZ-cのAZを選択します。
今回はマルチAZ構成にしないため一つでも構いません。EC2インスタンスと同じAZを選択しましょう。（画像は二つ選択していますが気にしないでください。）

**・サブネット**
選択したAZに属するサブネットを選択しています。本来ですと、EC2をパブリックサブネットでRDSをプライベートサブネットに配置したりする構成が多いと思いますが、今回は特に気にせず同じサブネットに置いてみます。
AZを一つしか選択していない人はサブネットも一つで十分です。
![スクリーンショット 2021-12-30 16.06.31.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/797483/1380a5c1-2a45-c799-3333-cec0e45b8936.jpeg)

#DB作成
次にDBを作成していきます。
RDS⇒データベース⇒データベースを作成の順でクリックしていきます。

データベース作成方法は標準作成を選択肢、エンジンはMySQLを選択します。
![スクリーンショット 2021-12-30 16.18.12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/797483/d302b26c-3230-c8f8-5819-d4ec79c35f72.jpeg)

バージョンはお好きなものを選択。特に指定等なければ最新のバージョンで構いません。
テンプレートは無料利用枠を選択します。
![スクリーンショット 2021-12-30 16.19.09.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/797483/ad1aa97f-947b-c31f-1f13-6a328c8be064.jpeg)

DBインスタンス識別子は先頭にtest等をつけてわかりやすくしましょう。
パスワードは自身のパスワードを利用します。
![スクリーンショット 2021-12-30 16.19.43.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/797483/e6b1d6c8-faae-1d4a-618b-98745b91b98c.jpeg)

DBインスタンスサイズはdb.t2.micro、ストレージは20GBとします。
VPCはEC2と同じ環境を選択しましょう。
※後でVPCの変更はできませんのでご留意ください。

サブネットグループは先ほど作成したサブネットグループを指定。
セキュリティグループも先ほど作成したセキュリティグループを指定します。
パブリックアクセスは今回は行わないため、なしにチェックを入れてください。
![スクリーンショット 2021-12-30 16.24.55.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/797483/e83e3092-9f39-f176-3ba6-f15a17a55079.jpeg)

データベースの作成をクリックします。データベース起動までに数分かかりますので、少し待ちましょう。
データベースが作成できたら、作成したDBをクリックするとエンドポイントが表示されているので、それをメモしておきます。

#DB接続
事前に構築してあるEC2にSSHで接続します。

以下コマンドを実行してmysqlをインストールします。
最後の完了しましたと表示されたらOKです。

```
$ sudo yum -y install mysql
```


次に以下のコマンドを実行します。
RDSのエンドポイントは各自のエンドポイントを入力します。

```
$ mysql -u admin -p -h <RDSのエンドポイント>
```

パスワードを聞かれるのでDBインスタンスを作成する際に指定したパスワードを入力します。

以下のように`MySQL [(none)]> `と表示されれば接続完了です。


```
[ec2-user@ip-172-31-33-168 ~]$ mysql -u admin -p -h <エンドポイント>
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 8.0.23 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)]> 
```



#さいごに

以上がEC2とRDS(MySQL)の接続手順になります。
今度はマルチAZや複数のEC2から接続する方法などの記事を作成しようと思っていますので、ぜひそちらもごらんください。

最後までご覧いただきありがとうございました！