CentOS7.3 に MySQL5.7 をインストールした時のメモ

作業環境

  • CentOS7.3
  • いまmariadb5.5が入っている

注意点

  • 初回起動時にrootの初期パスワードが自動設定される(後述)
  • MySQL 5.7 からユーザーのパスワードの有効期限がデフォルトで360日になったので注意(後述)

参考URL

http://blog.ybbo.net/2016/12/18/install_mysql5-7-by-yum-to-centos7/
https://yoku0825.blogspot.jp/2015/03/mysql-576-mysqlinstalldbmysqld.html
http://weblabo.oscasierra.net/mysql-57-init-setup/

以下、手順

1. mariadb が入っていたら消す

# 確認する
rpm -qa | grep maria
mariadb-libs-5.5.50-1.el7_2.x86_64  ← 入ってるとこんなの出る

# 消す
yum remove mariadb-libs ←関連パッケージまとめて消してくれた
rm -rf /var/lib/mysql/

2. MySQL5.7のインストール

# インストール
yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
yum install mysql mysql-devel mysql-server mysql-utilities

# 確認
rpm -qa | grep mysql
mysqld --version

3. 初期化

mysqld --user=mysql --initialize
  • mysql_install_db ではなくなった
  • my.cnf に書いてあるdatadirにファイル群が作成される( /var/lib/mysql )
  • datadir自体を削除すれば、初期化をやり直せる( rm -rf /var/lib/mysql/ )

4. 自動起動にする

systemctl enable mysqld.service

5. 起動・終了してみる

systemctl start mysqld.service
systemctl stop mysqld.service
systemctl restart mysqld.service

初期rootパスワードについて

概要

初回起動時にrootの初期パスワードが自動設定される。
ログに出力されるので確認する。

grep password /var/log/mysqld.log

のちほど mysql_secure_installation で変更する。

初期パスワードがわからない、初期パスワードで入れない

※初期パスワードがわからない、初期パスワードで入れない場合は、リセットする
参考URL: http://qiita.com/ksugawara61/items/d8d69b7d57a3afcef980

1. my.cnf の [mysqld]ブロックに skip-grant-tables を追記して、mysqldを再起動

2. rootパスワード変更

mysql -u root
use mysql
UPDATE user SET authentication_string=password('なんかパスワード') WHERE user='root';
flush privileges;

3. my.cnf の [mysqld]ブロックの skip-grant-tables を消して、mysqldを再起動

4. んで、とりあえず入れるようになるが、すぐ変更を求められる

mysql> なんかやろうとすると...
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

5. なので、変更する

mysql> SET PASSWORD = PASSWORD('なんかパスワード');

初期設定

mysql_secure_installation コマンドを実行する

  • rootのパスワード変更
  • anonymous ユーザを削除
  • testデータベースを削除
  • VALIDATE PASSWORD PLUGIN のインストールするか(個人の手元の開発環境ならとりあえず不要)

などを行う

my.cnf に追記

[mysqld]ブロックに以下を追記

character-set-server = utf8
default_password_lifetime = 0