MySQL 8.4.0 Обновление и ошибка unknown variable default-authentication-plugin=mysql_native_password
Как вы знаете (а может еще не в курсе), но не давно был релиз Mysql 8.4 и среди списка обновлений есть такой пункт как:
default_authentication_plugin: Deprecated in MySQL 8.0.27, and now removed. Use authentication_policy instead
Что логично ведет к отключению устаревшего плагина аутентификации mysql_native_password по умолчанию и полному отказу сервиса MySQL в принципе после обновления, если он у вас используется, а это может произойти как после запуска update и upgrade системы, так и запуск контейнера докера с mysql:latest.
В логах mysql /var/log/mysql/error.log можно увидеть ошибку, валящую СУБД:
2024-05-08T07:15:11.474311Z 0 [ERROR] [MY-000067] [Server] unknown variable 'default-authentication-plugin=mysql_native_password'.
2024-05-08T07:15:11.475302Z 0 [ERROR] [MY-010119] [Server] Aborting
Либо при попытке подключиться к MySQL:
mysql -u root -p
выдается:
ERROR 1524 (HY000): Plugin 'mysql_native_password' is not loaded
Решение
Решить данную проблему можно, запустив MySQL с новой опцией сервера --mysql-native-password=ON или добавив директиву mysql-native-password=ON в раздел [mysqld] вашего конфигурационного файла MySQL:
#может быть здесь
sudo nano /etc/mysql/mysql.conf.d/default-auth-override.cnf
#или здесь
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
открыв файл вы увидите что-то типа:
# This file is automatically generated by MySQL Maintainer Scripts
[mysqld]
default-authentication-plugin = mysql_native_password
приводим его к виду:
# This file is automatically generated by MySQL Maintainer Scripts
[mysqld]
mysql-native-password=ON
и перегружаем или стартуем mysql:
sudo service mysql start
#или
sudo service mysql restart
в докере меняем соотвественно команду c :
command: ["mysqld", "--default-authentication-plugin=mysql_native_password"]
на
command: ["mysqld", "--mysql-native-password=ON"]
ну или в любом другом месте где используется default-authentication-plugin=mysql_native_password на mysql-native-password=ON.
Должно все заработать, а вот что делать потом, дело каждого) главное все работает в данный момент и можно спокойно заниматься делами.
Что думаешь?