AWS EC2 AmazonLinux2 MySQLをインストールする

## 〜宣伝〜

:::note info
個人開発でエンジニア専門マッチングサービスを開発しましたので、是非未経験からエンジニア目指している人！現役エンジニアで教えたい人！使ってみてください！

β版リリース記念キャンペーン中です！

10名様限定、抽選でお好きな技術本1冊プレゼント！
🎉当選者にはメッセージ差し上げます(送付の際に住所はお聞きしません)
詳しくはこちらから↓

https://x.com/dokupro01/status/1796837336145436846
:::
https://dokupro.dev/

## 目的

- AWS EC2 AmazonLinux2にMySQLにインストールする方法をまとめる

## 実施環境

- ハードウェア環境

| 項目 | 情報 |
| --- | --- |
| OS | macOS Catalina(10.15.5) |
| ハードウェア | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
| プロセッサ | 2 GHz クアッドコアIntel Core i5 |
| メモリ | 32 GB 3733 MHz LPDDR4 |
| グラフィックス | Intel Iris Plus Graphics 1536 MB |

- ソフトウェア環境

| 項目 | 情報 | 備考 |
| --- | --- | --- |
| AWS EC2インスタンス | AmazonLinux2インスタンス | こちらの方法を用いてインスタンスを起動→[AWS EC2 をMacで使ってみよう!](https://qiita.com/miriwo/items/a1ab84c098008e43d042) |
| MySQLバージョン | 8.0.19 for osx10.15 on x86_64 (Homebrew) | Homwbrewを用いて導入 |

## 最初に

- 本記事で紹介している`yum install`コマンドではあえて -yオプションを付与していません。（インストールするパッケージを目視で確認するため）何度も何度も「yを入力 → Enter」が出てきて煩わしい方は-yオプションを付けても良いと思います。

## 前提方法

- EC2インスタンスは下記の方法を実施して作成した。
    - [AWS EC2 をMacで使ってみよう!](https://qiita.com/miriwo/items/a1ab84c098008e43d042)

## 説明完了時の状況

- MySQLがインストールされmysqldが正常に起動することができる。

## 概要

1. MySQL必要パッケージのインストールと設定
1. mysqldのステータス確認
1. rootアカウントにてMySQLにログイン

## 詳細

- ※これより実行するコマンドはインスタンスにsshでログインしたターミナルで実行する物とする。

1. MySQL必要パッケージのインストールと設定
    1. sshを使用してインスタンスにログインする。
    1. 下記コマンドを実行してyumを最新状態にする。

        ```terminal
        sudo yum update -y
        ```
    1. 下記コマンドを実行してインスタンス作成初期からインストールされているMariaDB用パッケージを削除する。

        ```terminal
        sudo yum remove -y mariadb-*
        ```

        1. 下記のコマンドを実行してmariadb関連ファイルをすべて削除しないとうまく行かないとご報告いただきました！追記させていただきます（2021/11/29 追記 @bayasist 様のご知見です。コメントありがとうございます！非常に助かりました！）

            ```terminal
            sudo yum remove -y mariadb-*
            ```

        1. 上記を実行しないと下記コマンドで詰まることがあるそうです。

            ```
            sudo yum install -y --enablerepo=mysql80-community mysql-community-server
            ```

    1. 下記コマンドを実行してMySQLのリポジトリをyumに追加する。（下記リポジトリ取得のコマンドはURL部分が変更になることがあります。[こちら](https://dev.mysql.com/downloads/repo/yum/)にアクセスいただき「Red Hat Enterprise Linux 7 / Oracle Linux 7」の欄の下に記載されているリポジトリ名を下記コマンドのURLの`https://dev.mysql.com/get/`以降に適応してコマンドを実行してください。）

        ![MySQL____Download_MySQL_Yum_Repository.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/10fa1804-7254-f901-dc59-42327d43b263.png)

        ```terminal
        sudo yum localinstall -y https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
        ```

    1. 下記コマンドを実行してMySQLに必要なパッケージ(mysql-community-server)を取得する。(yを入力してEnterを押下する際にインストールパッケージとリポジトリが下記の様になっていることを確認する。下記のスクショは記事記載時のものです。現在は表示されているパッケージが異なっているかもしれません。)

        ![ec2-user_ip-172-31-7-145__etc_yum_repos_d.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/303a71f3-d4ee-9c7f-8fd4-fc24ce230300.png)

        ```terminal
        sudo yum install -y --enablerepo=mysql80-community mysql-community-server
        ```
    1. 下記コマンドを実行してMySQLに必要なパッケージ(mysql-community-devel)を取得する。(yを入力してEnterを押下する際にインストールパッケージとリポジトリが下記の様になっていることを確認する。下記のスクショは記事記載時のものです。現在は表示されているパッケージが異なっているかもしれません。)
        
        ![ec2-user_ip-172-31-7-145__.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/955aead6-606a-f2c2-a835-5c0528f70ba6.png)

        ```terminal
        sudo yum install -y --enablerepo=mysql80-community mysql-community-devel
        ```
    1. 下記コマンドを実行してインストールされたMySQLに関係のあるパッケージを出力する。

        ```terminal
        yum list installed | grep mysql
        ```
    1. 先のコマンドの結果が下記の様になれば必要パッケージのインストールは完了である。

        ```terminal
        mysql-community-client.x86_64         8.0.28-1.el7                   @mysql80-community
        mysql-community-client-plugins.x86_64 8.0.28-1.el7                   @mysql80-community
        mysql-community-common.x86_64         8.0.28-1.el7                   @mysql80-community
        mysql-community-devel.x86_64          8.0.28-1.el7                   @mysql80-community
        mysql-community-icu-data-files.x86_64 8.0.28-1.el7                   @mysql80-community
        mysql-community-libs.x86_64           8.0.28-1.el7                   @mysql80-community
        mysql-community-server.x86_64         8.0.28-1.el7                   @mysql80-community
        mysql80-community-release.noarch      el7-5                          installed  
        ```
    1. 下記コマンドを実行してlogファイルを作成する。

        ```terminal
        sudo touch /var/log/mysqld.log
        ```
    1. 下記コマンドを実行してmysqldを起動する。

        ```terminal
        sudo systemctl start mysqld 
        ```
1. 確認
    1. 下記コマンドを実行してmusqldの状態を確認する。

        ```terminal
        systemctl status mysqld.service
        ```
    1. 下記の様に出力されれば正常にmysqldが起動できている。

        ```terminal
                 ● mysqld.service - MySQL Server
            Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
            Active: active (running) since Mon 2020-06-08 14:35:25 UTC; 25s ago
              Docs: man:mysqld(8)
                    http://dev.mysql.com/doc/refman/en/using-systemd.html
           Process: 11493 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
          Main PID: 11566 (mysqld)
            Status: "Server is operational"
            CGroup: /system.slice/mysqld.service
                    └─11566 /usr/sbin/mysqld
        ```
    1. 下記コマンドを実行してmysqldがインスタンスの起動と同時に起動するように設定する。

        ```terminal
        sudo systemctl enable mysqld
        ```
1. rootアカウントにてMySQLにログイン
    1. 本記事が長くなるためこちらの内容は下記の別記事で取り扱う。下記に紹介先のリンクを記載する。
        - [AWS EC2 AmazonLinux2 MySQL rootユーザの初期パスワードの確認方法](https://qiita.com/miriwo/items/457d6dbf02864f3bf296)

## 参考文献

- [MySQL Yumリポジトリを使用するためのクイックガイド](https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/)