【環境】
MySQL: 8.0.15
CentOS: 7.6.1810
VirtualBox グラフィカルユーザーインターフェース: 5.1.24 r117012 (Qt5.6.2)
リポジトリ
取得
rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
noarch の前の数値が、前回の 1 から 2 へ増えている。
気になるけど、次回!
確認
yum repolist all | grep mysql
インストール
yum install -y mysql-community-server
起動と停止
// 起動
systemctl start mysqld.service
// 停止
systemctl stop mysqld.service
// 自動起動
systemctl enable mysqld.service
systemctl list-unit-files -t service | grep mysqld
mysqld.service enabled
mysqld@.service disabled
初期パスワード
確認
cat /var/log/mysqld.log | grep "A temporary password"
2019-03-09T05:40:56.206659Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: hogehoge
変更
ログイン
mysql -uroot -p -hlocalhost
Enter password:
上記初期パスワードを入力。
変更
今回は、my.cnf で設定しただけではダメで
下記処理が必要だった。
パスワード変更
まで面倒なことをしなくても
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'MyNewPass';
こちらでうまくいった。
use mysql;
select user, host, plugin from user;
+------------------+-----------+-----------------------+
| user | host | plugin |
+------------------+-----------+-----------------------+
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session | localhost | caching_sha2_password |
| mysql.sys | localhost | caching_sha2_password |
| root | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
4 rows in set (0.00 sec)
タイムゾーン
タイムゾーン
設定
my.cnf 8.0.x
参考サイト
Qiita:CentOS7にMySQL8.0をインストール(2019-02-17)
試行錯誤
起動しない
原因想像
インストール直後に例の「初期パスワードを調べなきゃ」と思ってやり方を探していた際
Qiita:MySQL 8.0 初期設定覚書(2019-02-07)
を見つけた。
初期パスワードを調べなくてよい方法が書かれているようだったので
ロクに調べもせずに、盲従して
mysqld --initialize-insecure
mysql_secure_installation
Securing the MySQL server deployment.
Enter password for user root:
となり、参考サイトとは異なる道順となってしまった。
あれ?と思い、
systemctl enable mysqld
systemctl start mysqld
Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
と起動してみたところ、エラーとなった。
systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since 水 2019-02-27 00:57:05 JST; 16s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 15500 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS (code=exited, status=1/FAILURE)
Process: 15483 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 15500 (code=exited, status=1/FAILURE)
Status: "SERVER_BOOTING"
Error: 2 (そのようなファイルやディレクトリはありません)
2月 27 00:57:05 localhost.localdomain systemd[1]: Starting MySQL Server...
2月 27 00:57:05 localhost.localdomain systemd[1]: mysqld.service: main process exited, code=exited, status=1/FAILURE
2月 27 00:57:05 localhost.localdomain systemd[1]: Failed to start MySQL Server.
2月 27 00:57:05 localhost.localdomain systemd[1]: Unit mysqld.service entered failed state.
2月 27 00:57:05 localhost.localdomain systemd[1]: mysqld.service failed.
初期パスワード確認
ちなみにこのタイミングで初期パスワードを確認してみたら
grep -i password /var/log/mysqld.log
2019-02-26T15:54:54.194358Z 5 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
となった。
エラー
ログを確認してみたところ
vi /var/log/mysqld.log
2019-02-26T15:57:05.414331Z 1 [ERROR] [MY-012271] [InnoDB] The innodb_system data file 'ibdata1' must be writable
となっていたので
権限確認
当該ファイルの場所を探し
find / -name 'ibdata1'
/var/lib/mysql/ibdata1
当該ファイルの権限を確認してみたら
ll /var/lib/mysql
ほとんどの権限者が root になっていた。
他の仮想マシンを参照したところ
全ての権限者が mysql になっていた。
あちゃー。。。
再インストール
rm -rf /var/lib/mysql/*
yum remove mysql-community-server
yum install -y mysql-community-server
この時点では
ll /var/lib/mysql
合計 0
続いて
systemctl status mysqld.service
systemctl start mysqld.service
こうしたら
ll /var/lib/mysql
合計 168000
drwxr-x--- 2 mysql mysql 187 3月 9 14:41 #innodb_temp
-rw-r----- 1 mysql mysql 56 3月 9 14:40 auto.cnf
-rw-r----- 1 mysql mysql 155 3月 9 14:41 binlog.000001
-rw-r----- 1 mysql mysql 16 3月 9 14:41 binlog.index
-rw------- 1 mysql mysql 1680 3月 9 14:40 ca-key.pem
-rw-r--r-- 1 mysql mysql 1112 3月 9 14:40 ca.pem
-rw-r--r-- 1 mysql mysql 1112 3月 9 14:40 client-cert.pem
-rw------- 1 mysql mysql 1680 3月 9 14:40 client-key.pem
-rw-r----- 1 mysql mysql 5748 3月 9 14:40 ib_buffer_pool
-rw-r----- 1 mysql mysql 50331648 3月 9 14:41 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 3月 9 14:40 ib_logfile1
-rw-r----- 1 mysql mysql 12582912 3月 9 14:41 ibdata1
-rw-r----- 1 mysql mysql 12582912 3月 9 14:41 ibtmp1
drwxr-x--- 2 mysql mysql 143 3月 9 14:40 mysql
-rw-r----- 1 mysql mysql 25165824 3月 9 14:41 mysql.ibd
srwxrwxrwx 1 mysql mysql 0 3月 9 14:41 mysql.sock
-rw------- 1 mysql mysql 6 3月 9 14:41 mysql.sock.lock
drwxr-x--- 2 mysql mysql 4096 3月 9 14:40 performance_schema
-rw------- 1 mysql mysql 1680 3月 9 14:40 private_key.pem
-rw-r--r-- 1 mysql mysql 452 3月 9 14:40 public_key.pem
-rw-r--r-- 1 mysql mysql 1112 3月 9 14:40 server-cert.pem
-rw------- 1 mysql mysql 1680 3月 9 14:40 server-key.pem
drwxr-x--- 2 mysql mysql 28 3月 9 14:40 sys
-rw-r----- 1 mysql mysql 10485760 3月 9 14:41 undo_001
-rw-r----- 1 mysql mysql 10485760 3月 9 14:41 undo_002
無事に権限者が mysql になった。
前回は何だったのかしらね。。。