【Amazon Linux2】MySQL5.7の初期化、環境構築

##MySQLの削除
```
#停止
sudo service mysqld stop

#停止したか確認
sudo service mysqld status

#インストール済みのMySQLの確認
 パッケージ管理コマンドのrpmでインストール済みのmysqlを探す。
 オプションのqがパッケージ情報の表示と検索、aがインストールされているパッケージを一覧表示する。
 それを、grepで絞り込んでいる。
rpm -qa | grep -i mysql
mysql-community-common-5.7.30-1.el7.x86_64
mysql57-community-release-el7-11.noarch
mysql-community-libs-5.7.30-1.el7.x86_64
mysql-community-server-5.7.30-1.el7.x86_64
mysql-community-client-5.7.30-1.el7.x86_64

#MySQLの削除
sudo yum remove mysql-community-common-5.7.30-1.el7.x86_64
sudo yum remove mysql57-community-release-el7-11.noarch
sudo yum remove mysql-community-libs-5.7.30-1.el7.x86_64
sudo yum remove mysql-community-server-5.7.30-1.el7.x86_64
sudo yum remove mysql-community-client-5.7.30-1.el7.x86_64

#または、一気に削除
sudo yum remove mysql

#データベースの削除
sudo rm -rf /var/lib/mysql

```
##MySQL5.7のインストール
◯参考サイト
https://qiita.com/2no553/items/952dbb8df9a228195189

```
#mariadbがインストールされているか確認
$ yum list installed | grep mariadb
mariadb-libs.x86_64                   1:5.5.56-2.amzn2                 installed

#mysqlがインストールされているか確認
$ yum list installed | grep mysql

#mysqlがインストールできるか確認
$ yum info mysql
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
エラー: 表示するパッケージはありません

#mysql8.0リポジトリの追加（このリポジトリに5.7も含まれています）
$ sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm -y

#mysql8.0リポジトリの無効化
$ sudo yum-config-manager --disable mysql80-community

#mysql5.7リポジトリの有効化
$ sudo yum-config-manager --enable mysql57-community

#mysql5.7がインストールできるか確認
$ yum info mysql-community-server

#mysqlインストール
$ sudo yum install mysql-community-server -y

#バージョンを確認
$ mysqld --version
```

##mysqlの初期化
```
sudo mysqld --initialize --user=mysql
[ERROR] --initialize specified but the data directory has files in it. Aborting.
[ERROR] Aborting
```
しかしエラーが発生。
https://hirose31.hatenablog.jp/entry/20161004/1475582156
こちらの記事を参考にし、エラーを解消。MySQLの初期化が完了。

##MySQLの初期化後、初期パスワードが発行されるので確認する。

次にmysql -u root -pでログインしようとするとエラーが発生。

```
$ mysql -u root -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
```
rootパスワードを再設定する。
※この時設定したrootパスワードが、DB_PASSWORDになる。

```
# 初期パスワードを確認
$ sudo cat /var/log/mysqld.log | grep 'temporary password'  # 初期パスワードを確認

# rootユーザのパスワードなどを変更するため、次のコマンドで変更を行っていく。
$ mysql_secure_installation

# 新しく設定したパスワードでログインが完了。
$ mysql -u root -p
Enter password: # 設定したパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
〜〜
```
◯参考サイト
https://qiita.com/ksugawara61/items/336ffab798e05cae4afc#4-mysql%E3%81%AB%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%8B%E7%A2%BA%E8%AA%8D

##mysql2のgemをアンインストールし、再度インストールした。
```
gem uninstall mysql2
gem install mysql2
```
インストールの際エラーが発生したが、「mysql-devel」をインストールすると無事通った。

```
sudo yum install mysql-devel
gem install mysql2
```

##DBをcreateし、migrateを実行。
```
rake db:create RAILS_ENV=production
rake db:migrate RAILS_ENV=production
```

##rootでMySQLにログイン後、ユーザーを作成 → 権限の付与。

```
# rootユーザーでログイン
mysql -u root -p

# MｙSQLを選択
mysql> use mysql;

# ユーザーの作成
mysql> CREATE USER test@localhost IDENTIFIED BY ‘password’;

# ユーザーが追加されているか確認
mysql> SELECT  host, user FROM mysql.user;

# 新規ユーザーへ権限の付与
mysql> GRANT ALL PRIVILEGES ON *.* TO test@localhost;

# 権限の付与を反映させる
mysql> FLUSH PRIVILEGES;

# 権限が付与されたか確認する
mysql> show grants for test@localhost;

# rootユーザーをログアウト後、作成したユーザーでログインできるか確認する
mysql> quit

sudo service mysqld stop
sudo service mysqld start # MySQLの再起動

mysql -u test -p
Enter password: 新規ユーザー作成時に入力したパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
〜〜

```

最後にunicornを再起動させ、MySQLをの設定を反映させる。