作業環境
- 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