ローカルマシンの開発環境で使用しているMySQLがapt upgradeの度に失敗する。
実際にはupgradeの最中で停止するのだけれども、なんでいつも失敗するのだろう?と不思議でしょうがなかったが、原因がわかったのでメモとして記載しておく。
※実稼働中のサーバでは上記のような失敗は今まで一度もない
環境
OS:Ubuntu 20.04
MySQL:8系
症状
$ sudo apt update $ sudo apt upgrade
実行後、
mysql-server-8.0 (8.0.22-0ubuntu0.20.04.2) を設定しています ... mysqld will log errors to /var/log/mysql/error.log mysqld is running as pid 3298
上記のようなメッセージで止まる。
MySQLの設定に何か誤りがあるのか?
開発環境で加えている設定を確認してみたところ、
[mysqld] default_authentication_plugin=mysql_native_password skip-grant-tables character-set-server = utf8 default_password_lifetime = 0
上記の設定を加えている。
何故、skip-grant-tablesなんて危ない設定を加えているのか?というと、MySQLの仕様で以前は弱いパスワードでも警告が出なかったけれども、最近のバージョンはパスワードに関して何かとうるさく、ローカル環境でMySQLを使用する際に毎回パスワードを入力するのが面倒臭かったので、パスワードの入力を省くようにしていた。
※skip-grant-tablesは本来、ルートのパスワードの再設定時にパスワードの入力を省いて設定を変更する為にある
MySQL :: MySQL 8.0 Reference Manual :: B.3.3.2 How to Reset the Root Password
skip-grant-tablesをコメントアウトして、再び、sudo apt upgradeを実行したら問題なく終了した。
skip-grant-tablesなんてアホな設定をし続けるなんてことは普通ないからな。
apt upgrade中でもエラーメッセージが用意されていなくて停止するのだろう。