AWS/EC2/RDS - MariaDBのインストール手順 with Rails6

こんにちは。
早く駆け出したい @iloveomelette です。

AWSにデプロイを行う際、Rails + MySQLのインストール方法を紹介した記事などはたくさんあるのですが、なぜかMySQLと高い互換性を持つRails + MariaDBのインストール方法はあまり見かけないので、こちらでアウトプットしていきます。

尚、ご指摘箇所がございましたら
ご教授いただけますと幸いです。

## はじめに

では、まず前提として私の動作環境についてお伝えしておきます。

- macOS Monterey 12.3.1 (M1)
- Rails 6.1.5
- MariaDB 10.6.7
- Amazon マシンイメージ (AMI):「無料利用枠の対象 Amazon Linux 2 AMI (HVM), SSD Volume Type 64ビット (x86)」
- インスタンスタイプの選択:「無料利用枠の対象タグの付いた t2.micro」
- RDSも使用

:::note warn
注意
以降、ややこしい記載があるので間違えないようにしてください。
  **ローカル環境**のターミナル => ご自身のターミナル
  **サーバ環境**のターミナル => EC2にログインした状態のターミナル
:::

**EC2インスタンスの作成から各種設定までは完了していることを前提とします。**
もし、完了していない場合はお手数ですが、他の記事を参考に進めていただいてから戻ってきていただけますと幸いです。

前提としてはこんなところでしょうか。追記が必要な場合は追記していきます。

## EC2にログイン

EC2にログインしていない場合は、ログインをしましょう。
以下のコマンドにご自身のパスやユーザ名などを変えて入力してください。

```zsh:ローカル環境のターミナル
ssh -i /path/my-key-pair.pem my-instance-user-name@my-instance-public-dns-name
```

>引用: [SSH を使用した Linux インスタンスへの接続](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html)

## MariaDBのインストール

では、本題のMariaDBをインストールしていきます。
手順としては、

1. MariaDBのリポジトリを追加
2. MariaDBのインストール

### MariaDBのリポジトリを追加

まずは下準備をしていきます。
先にMariaDBのリポジトリを取得しましょう。
[公式MariaDB](https://mariadb.org/download/?t=repo-config)にアクセスして
EC2で使うアーキテクチャを選択した後に、バージョンを選択するタブが出てくるので
EC2で選択したバージョンと同じものを選択してMirrorは適当に選択してください。
私の場合はデフォルトで「山形大学」(?)だったので、そのまま選択しました。

![mariadb-repository.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2459618/0157ebe8-cb2d-3d57-266e-e79107a29637.png)

全て選択することができたら、赤枠の部分を全てコピーをします。
コピーができたら以下のコマンドを実行していきます。

```bash:サーバ環境のターミナル
# `yum.repos.d`ディレクトリがちゃんとあるか念の為、確認をします。
$ ls /etc/yum.repos.d
=> amzn2-core.repo  amzn2-extras.repo

# Vimを開いて`MariaDB.repo`ファイルを新規作成します。
$ sudo vi /etc/yum.repos.d/MariaDB.repo
```

注意点としては、2つ目のコマンド冒頭`sudo`を付けている点です。
権限の関係上、これを付けないと保存できません。
Vimで`MariaDB.repo`を新規作成したら、先ほどのコピーしたものをペーストしてください。

＊Vimの使い方に関しては、他の記事を参照してください。**文字の入力をするためにはキーボードの`i`を押して「インサートモード」にする必要があります。**

ペーストして保存までできたら以下のコマンドを実行して念の為、ちゃんとコピーされているか確認します。

```bash:サーバ環境のターミナル
$ cat /etc/yum.repos.d/MariaDB.repo
```

しっかりと保存されていればOKです。

### MariaDBのインストール

では、下準備も終わったところでメインのインストールに入ります。
以下のコマンドを実行してインストールします。

```bash:サーバ環境のターミナル
$ sudo yum -y install MariaDB-server MariaDB-client MariaDB-devel MariaDB-shared
```

上のコマンドでインストールしたものが何かは公式MariaDBで知ることができます。

| Package Name | Description |
|:-:|:-:|
| MariaDB-client  | Client tools like mysql CLI, mysqldump, and others.  |
| MariaDB-server  | The server and server tools, like myisamchk and mysqlhotcopy are here.  |
| MariaDB-devel  | Development headers and static libraries.  |
| MariaDB-shared  | Dynamic client libraries.  |

>引用：[公式MariaDB](https://mariadb.com/kb/en/about-the-mariadb-rpm-files/)

`MariaDB-client`はMySQL コマンドラインクライアントなどのツールで、これをインストールして使用することでAWSのRDSに接続することができます。

`MariaDB-server`はその名の通りデータベースサーバを使うためのパッケージです。

`MariaDB-devel`はRailsからMariaDBを操作するために必要なパッケージです。

`MariaDB-shared`は動的クライアントのライブラリらしいですが、勉強不足のため分かりません。詳しい方いらっしゃいましたらご教授いただけますと幸いです。

話が逸れましたが、インストールが完了したらRDSのMariaDBにログインします。

```bash:サーバ環境のターミナル
$ mysql -h エンドポイント -u root -p
# コマンドを実行するとRDSのパスワードが聞かれるので入力
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is ***
Server version: 10.6.7-MariaDB-log managed by https://aws.amazon.com/rds/

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

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

省略したオプションは以下の意味を持っています。（[参照](https://26gram.com/connect-to-mysql)）

| オプション | 略なし | 意味 |
|:-:|:-:|:-:|
| -h  | --host  | ホスト名を指定  |
| -u  | --user  | ユーザ名を指定  |
| -p  | --password  | パスワードを指定  |

上記のコマンドを実行してパスワードを入力すると`MariaDB >`に切り替わるのでデータベースがちゃんと存在するか以下のコマンドを実行して確認します。

```bash:サーバ環境のターミナル
MariaDB > show databases;
# 「アプリ名_production」があればOK!

MariaDB > exit
```

これで無事にMariaDBをインストールすることができました！！
お疲れ様でした！！
誰かのお役に立てたら幸いです。

## 参考

- [MariaDB10.6(10.5)のインストール(Amazon Linux2(ec2),CentOS7)、WordPressの環境構築](https://it-jog.com/wordpress/install-mariadb10-wpress)
- [Amazon linux 2にPHP7.xとMariaDB10.xをインストールする](https://www.akiba.monster/amazonlinux2-php7x-mariadb10x/#MariaDB_10x%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B)
- [MariaDB DB インスタンスを作成して MariaDB DB インスタンスのデータベースに接続する - 公式AWS](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.MariaDB.html)