先日からMySQL関係でバタバタしています。とりあえず既存データベースを mysqldump でバックアップしたあと、他のサーバーに引っ越しして復元する手順を確認しておこうとしています。
引っ越しテストサーバーに MySQL 5.7(サポート終了バージョン)をインストールした後、”service mysql-server start” で起動。mysql は無事に起動したので、安心していましたが、
そのあと、
mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
で、ログインできないことに気づきました。
これも数時間悩みました。MySQLを入れたり、消したり。
ふと、画面に表示されているインストールログに目が行き、読んでみると。
Message from mysql57-server-5.7.42: -- Initial password for first time use of MySQL is saved in $HOME/.mysql_secret ie. when you want to use "mysql -u root -p" first you should see password in /root/.mysql_secret
Unixログイン用のrootパスワードじゃなく、root の $HOME/.mysql_secret に保存されているとのこと。がっくり。安全性のためか、root と mysql のパスワードは分離されたのかも。
私は別に MySQL を使いたいわけじゃなくて、WordPress に必要だから入れているだけ。だからMySQLのバージョンアップによる仕様変更なんて追跡していないわけです。目の前にある答えが見えずに、数時間あ~でもないこ~でもないと試行錯誤しましたよ。
ログイン後、https://dev.mysql.com/doc/refman/8.0/ja/resetting-permissions.html を参考に、
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
で、変更すればよいみたい。