MySQL

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

More than 1 year has passed since last update.


作業環境


  • 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