最近、DockerでMySQLが起動しなくなる問題が発生しました。
以下のエラーメッセージが表示されました。
[ERROR] [MY-000067] [Server] unknown variable 'default-authentication-plugin=mysql_native_password'.
このエラーは、efault-authentication-plugin=mysql_native_password
という変数が不明であるために、MySQLサーバが起動に失敗していることを示しています。
原因は、DockerのMySQLバージョンがlatestになっていたため、自動的にMySQL 8.4に更新されたことです。
MySQL 8.4の変更点
MySQL 8.4では mysql_native_password 認証プラグインがデフォルトで無効になりました。
この変更により、古い認証方式を利用している場合には、MySQLサーバの起動に失敗する可能性があります。
解決策
MySQL 8.4では mysql_native_password
認証プラグインがデフォルトで無効になりましたが、削除されたわけではありません。
mysql_native_password
を引き続き使用するためには、MySQLの設定ファイルに以下の設定を追加する必要があります。
[mysqld]
default_authentication_plugin=mysql_native_password
または、MySQLサーバを起動する際に以下のオプションを指定します。
--default-authentication-plugin=mysql_native_password
推奨される移行方法
長期的には、mysql_native_passwordから caching_sha2_password への移行が推奨されます。
caching_sha2_passwordはセキュリティが強化されており、MySQLの最新バージョンでデフォルトの認証プラグインとなっています。