ローカルマシンの開発環境で使用している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中でもエラーメッセージが用意されていなくて停止するのだろう。