AWSのEC2で行うCentOS 7（MySQL5.7）環境構築

CentOS 7にMySQL5.7の環境構築をしていきます。MySQL8のリポジトリに5.7も含まれているのに気づかず、随分と探し回ってしまいました。

### バージョン情報
- Mac OS 10.11.6（El Capitan）
- CentOS Linux 7 x86_64 HVM

#### その他情報
- blog:[AWSのEC2で行うCentOS 7（MySQL5\.7）環境構築 – Ninolog](https://ninolog.com/install-centos7-mysql-aws-ec2/)

#### 事前に用意しておく必要があるもの
- 接続先EC2のパブリックDNS
- 作業ユーザ（CentOS 7の場合デフォルトはcentos）
- EC2からダウンロードした秘密鍵（デフォルトは****.pem）

### ssh接続
以下のコマンドを実行してAWSのEC2にSSH接続します。

```
$ ssh -i ~/.ssh/秘密鍵名.pem ユーザ名@パブリックDNS
```

### MySQLをインストール
CentOS 7にはMariaDBというMySQL互換のデータベースサーバーがデフォルトでインストールされていますが、MySQLはインストールされていませんのでMySQL公式のyumリポジトリを追加してインストールします。
mysqlをインストールする際、mariadbと入れ替えが行われるので、mariadbを削除する必要はありません。

```
===============================================================================================
 Package                         アーキテクチャー
                                            バージョン             リポジトリー           容量
===============================================================================================
インストール中:
 mysql-community-libs            x86_64     5.7.22-1.el7           mysql57-community     2.1 M
     mariadb-libs.x86_64 1:5.5.56-2.el7 を入れ替えます
 mysql-community-libs-compat     x86_64     5.7.22-1.el7           mysql57-community     2.0 M
     mariadb-libs.x86_64 1:5.5.56-2.el7 を入れ替えます
 mysql-community-server          x86_64     5.7.22-1.el7           mysql57-community     165 M
```

#### インストール
MySQL公式のyumリポジトリを追加してmysql５.７をインストールします。

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

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

#mysqlがインストールできるか確認
$ yum info mysql
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
エラー: 表示するパッケージはありません

#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
mysqld  Ver 5.7.22 for Linux on x86_64 (MySQL Community Server (GPL))

#自動起動設定
$ sudo systemctl start mysqld.service
$ sudo systemctl enable mysqld.service
$ systemctl status mysqld.service
```

#### 初期設定
mysqlの初期設定を行います。[ mysql_secure_installation ]での設定は必要に応じて行ってください。

```
#rootパスワードを確認
$ cat /var/log/mysqld.log | grep password
A temporary password is generated for root@localhost: ************

#初期設定
$ mysql_secure_installation
Enter password for user root: ************
New password: @@@@@@@@@@@@
Re-enter new password: @@@@@@@@@@@@
Change the password for root ? ((Press y|Y for Yes, any other key for No) : No
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Yes
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Yes
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Yes
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Yes
```

#### 文字コード設定
mysqlの文字コードを[ utf8mb4 ]に変更します。

```
#mysqlにログイン
$ mysql -u root -p
Enter password: @@@@@@@@@@@@

#文字コードの確認
mysql> show global variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
mysql> exit

#文字コードの変更（[mysqld]と[client]セクションと設定を追加）
$ sudo vi /etc/my.cnf
+ [mysqld] （既に記述されている場合は省略）
+ character_set_server=utf8mb4

+ [client]
+ default-character-set=utf8mb4

#mysql再起動
$ sudo systemctl restart mysqld.service

#mysqlにログイン
$ mysql -u root -p
Enter password: @@@@@@@@@@@@

#文字コードの確認
mysql> show global variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
mysql> exit
```

##### 参考サイト
- [MySQL :: A Quick Guide to Using the MySQL Yum Repository](https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/)
- [MySQL :: MySQL 5\.7 Reference Manual :: 10\.14 Character Set Configuration](https://dev.mysql.com/doc/refman/5.7/en/charset-configuration.html)