CentOS7にyumでMySQL5.7最新版をインストールする

MySQL5.7でレプリケーションや高可用性構成などを検証する機会に恵まれました。
備忘録として手順や検証結果を残していこうと思いますが、はじめに検証に使った環境のMySQLのインストール手順をまとめます。

環境

サーバー

・ESXi6.5仮想サーバー
・RAM:2GB、HDD:16GB(シンプロビジョニング)、NIC:1枚

OS

CentOS Linux release 7.4.1708 (Core)
 → minimalでインストールし、最低限のネットワーク設定のみ実施済

手順

rootで作業しています。必要に応じてsudoを付けて実行してください。

1. MySQL公式Yumリポジトリの情報のインストール

インストールするRPMパッケージは、下記のURLから最新版のファイル名を確認してコマンドを置き換えてください。
https://dev.mysql.com/downloads/repo/yum/

yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

真っ先にyum remove mariadb-libsしている手順をよく見かけますが、上記パッケージをインストールするとMySQLインストール時にmysql-libsと置換してくれるので削除不要です。削除した場合、依存性の関係でpostfixが削除されますのでご注意を。

2018/5/10補記 MySQL8.0GA以降の追加手順

2018/4/19にMySQL8.0がGAになり、上記リンクの最新のMySQL公式YumリポジトリからはデフォルトでMySQL8.0が導入されるようになりました。
引き続き、MySQL5.7をインストールしたい場合、下記の手順でMySQL8.0リポジトリの無効化とMySQL5.7リポジトリの有効化を行います。

# 公式リポジトリ情報ファイルのインストール(上記手順と同じ)
yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

# yum-utilsのインストール
yum install yum-utils
# MySQL8.0リポジトリの無効化
yum-config-manager --disable mysql80-community
# MySQL5.7リポジトリの有効化
yum-config-manager --enable mysql57-community
# mysql-communityの定義ファイルの確認
cat /etc/yum.repos.d/mysql-community.repo

2. MySQL のインストール

yum install mysql-community-server

以下のパッケージがインストールまたは置換されました。

インストール:
  mysql-community-libs.x86_64 0:5.7.21-1.el7
  mysql-community-libs-compat.x86_64 0:5.7.21-1.el7
  mysql-community-server.x86_64 0:5.7.21-1.el7

依存性関連をインストールしました:
  mysql-community-client.x86_64 0:5.7.21-1.el7
  mysql-community-common.x86_64 0:5.7.21-1.el7
  net-tools.x86_64 0:2.0-0.22.20131004git.el7
  perl.x86_64 4:5.16.3-292.el7
  perl-Carp.noarch 0:1.26-244.el7
  perl-Encode.x86_64 0:2.51-7.el7
  perl-Exporter.noarch 0:5.68-3.el7
  perl-File-Path.noarch 0:2.09-2.el7
  perl-File-Temp.noarch 0:0.23.01-3.el7
  perl-Filter.x86_64 0:1.49-3.el7
  perl-Getopt-Long.noarch 0:2.40-2.el7
  perl-HTTP-Tiny.noarch 0:0.033-3.el7
  perl-PathTools.x86_64 0:3.40-5.el7
  perl-Pod-Escapes.noarch 1:1.04-292.el7
  perl-Pod-Perldoc.noarch 0:3.20-4.el7
  perl-Pod-Simple.noarch 1:3.28-4.el7
  perl-Pod-Usage.noarch 0:1.63-3.el7
  perl-Scalar-List-Utils.x86_64 0:1.27-248.el7
  perl-Socket.x86_64 0:2.010-4.el7
  perl-Storable.x86_64 0:2.45-3.el7
  perl-Text-ParseWords.noarch 0:3.29-4.el7
  perl-Time-HiRes.x86_64 4:1.9725-3.el7
  perl-Time-Local.noarch 0:1.2300-2.el7
  perl-constant.noarch 0:1.27-2.el7
  perl-libs.x86_64 4:5.16.3-292.el7
  perl-macros.x86_64 4:5.16.3-292.el7
  perl-parent.noarch 1:0.225-244.el7
  perl-podlators.noarch 0:2.5.1-3.el7
  perl-threads.x86_64 0:1.87-4.el7
  perl-threads-shared.x86_64 0:1.43-6.el7

置換:
  mariadb-libs.x86_64 1:5.5.56-2.el7

3. 必要に応じて/etc/my.cnfの編集

ここでは特に編集していません。
データディレクトリやエラーログ(mysqld.log)の出力先をカスタマイズしたい場合、このタイミングで編集します。レプリケーション構成にしたい場合でも、このタイミングではバイナリログやGTIDの設定はデフォルトのまま無効とします。

4. MySQL Serverの初回起動

systemctl start mysqld.service

問題がなければ特にメッセージは返りません。

5. temporary passwordの確認とパスワード変更

初期パスワードと必要に応じてUUIDを確認します。

grep 'A temporary password' /var/log/mysqld.log
grep UUID /var/log/mysqld.log

上で確認したパスワードでmysqlにログインします。

mysql -u root -p

MySQLのrootユーザのパスワードを設定します。

mysql> SET PASSWORD='********';

インストールされた環境の構成

以下のような構成になりました。その他の詳細は以下のリンク先をご覧ください。 https://dev.mysql.com/doc/refman/5.7/en/linux-installation-rpm.html#mysql-installation-layout-linuxrpm

パス
オプションファイル /etc/my.cnf
データディレクト /var/lib/mysql/
エラーログ /var/log/mysqld.log
Pidファイル /var/run/mysql/mysqld.pid
Socket /var/lib/mysql/mysql.sock