【備忘録】AWSで作成したRDSにデータを追加するまで

## 概要
AWSを勉強し始めて1週間の超初心者が、新規作成したRDSにMySQLで接続し、データを追加するまでの流れを備忘録して記録しておきます。

:::note warn
著者はAWSについての詳しい知識は持っておりません。そのためこの記事には不正確な点があるかもしれません。もし間違いや改善点を発見しましたら、ご指摘いただけると幸いです。
:::

### 動作環境・前提条件
【動作環境】
- OS: M1 macOS Ventura 13.1
- リージョン: 大阪（ap-northeast-3）
- RDS: MySQL 8.0.32

【前提条件】
- AWSのアカウントを作成していること

## RDSにデータを追加するまで
RDSを作成しデータを追加するまでのおおまかな流れです。

**1. VPCを作成する**
**2. RDSでデータベースを作成**
**3. セキュリティグループにインバウンドルールを設定**
**4. MySQLに接続する**
**5. データを追加する**

順次詳しく解説します。

### STEP1 VPCを作成する
まずはVPCを作成します。
VPCとは**V**irtual **P**rivate **C**loudの略で、仮想的なネットワークを構築するためのサービスです。

作成するには、コンソール画面から「VPC」を選択し、「VPCを作成」をクリックします。
作成画面が表示されたら、以下のように設定します。
- 作成するリソース: VPCなど
- 名前タグ: TestVPC
- IPv4 CIDRブロック: 10.0.0.0/16

![スクリーンショット 2023-05-04 17.30.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278050/adad9ab7-af2e-5d88-39b1-f6a3081cbd86.png)

後はデフォルトのまま、作成してください。

### STEP2 RDSでデータベースを作成
次にRDSにデータベースを作成します。

まずコンソール画面から「RDS」を選択し、「データベースを作成」をクリックします。
作成画面が表示されたら、以下のように設定します。
- データベースの作成方法: 標準作成
- エンジンのタイプ: MySQL
- エンジンバージョン: MySQL 8.0.32
- テンプレート: 無料利用枠
- DBインスタンス識別子: testdatabase-1
- マスターユーザ名: お好みで
- マスターパスワード: お好みで
- Virtual Private Cloud(VPC): TestVPC(さっき作成したやつ)
- パブリックアクセス: あり
- VPCセキュリティグループ: 新規作成
- VPCセキュリティグループ名: TestSecurityGroup
- アベイラビリティーゾーン: ap-northeast-3a

後はデフォルトのまま、作成してください。

### STEP3 セキュリティグループにインバウンドルールを設定
次に、先ほど新規作成したセキュリティグループにインバウンドルールを設定します。
インバウンドルールとは外部からのアクセスを制御するルールのことです。これを適切に設定することで、外部からの不正アクセスを防止することができます。

データベースの詳細画面から、セキュリティグループをクリックします。
![スクリーンショット 2023-05-05 10.11.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278050/d1969533-9507-6f6c-c2be-b6fc5aa1660e.png)


セキュリティグループ画面が表示されたら、画面下部のインバウンドルールタブを選択し、インバウンドルールを編集をクリックしてください。
![スクリーンショット 2023-05-05 10.16.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278050/1338756e-e58a-7764-71fe-d6fdff580112.png)


編集画面が表示されたら、以下のルールを追加してください。
- タイプ: MYSQL/Aurora
- プロトコル: TCP
- ポート範囲: 3306
- ソース: マイIP

### STEP4 MySQLに接続する
次に、作成したデータベースにMySQLで接続して、データを追加します。

今回はSqlectronというアプリを使って、接続します。

https://sqlectron.github.io/

アプリをダウンロードして起動したら、画面上部の「Add」をクリックしてください。
追加画面が表示されたら、以下のように設定します。
- Name: TestMySQL
- Database Type: MySQL
- Server Address Host: 作成したサーバのエンドポイント
- ServerAddress Port: 3306
- User: 設定したユーザ名
- Password: 設定したパスワード
![スクリーンショット 2023-05-05 10.25.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278050/bc165d85-ba0d-d7fd-d9d6-a47ee41d71de.png)


補足として、MacのTerminalから接続する場合は、以下のコマンドを入力してください。
``` sh
brew update
brew install mysql
```


``` sh
mysql -h エンドポイント -P 3306 -u ユーザ名 -p
```

### STEP5 データを追加する
最後に、データを追加していきます。

Sqlectronでデータベースに接続できたら、以下のコマンドを入力してください。
``` sql
CREATE DATABASE sample_database;
USE sample_database;
```
RDSの中にsample_databaseという領域（？）を作り、その中にデータを追加していきます。

```sql
CREATE TABLE User(id Int NOT NULL PRIMARY KEY, name CHAR(10) NOT NULL, age Int);
```
次にsample_databaseの中にUserというテーブルを追加します。
ここでは`id`を主キーとして設定しています。

``` sql
INSERT INTO User VALUE(1, "A", 20), (2, "B", 30), (3, "C", 35), (4, "D", 28), (1, "E", 40); 
```
最後にUserの情報を追加します。

``` sql
SELECT * FROM User;
```
SELECT文でデータを表示すると、追加されているのがわかるはずです。
![スクリーンショット 2023-05-05 10.37.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2278050/81d42037-fde1-c683-8f17-4c0b319e8953.png)


## まとめ
まだまだ知識不足ですが、とりあえず作成したデータベースにデータを追加することはできました。

## 参考にした記事
https://sqlectron.github.io/

https://zenn.dev/sway/articles/aws_publish_create_rds

https://engineer-ninaritai.com/aws-vpc-make/