На днях апргрейднув MySQL c 5.5 до 8.0, о чем в последствии пожалел, я столкнулся с целой горой проблем. Одной из них стала ошибка авторизации пользователя root.
Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such fileor directory
В блогах разработчиков MySQL 8 нашел информацию, что данная библиотека встроена в сам исходник MySQL, поэтому проблема решается изменением способа идентификации пользователя. Для этого необходимо:
Остановить MySQL сервер:
serice mysqld stop
Запустить сервер без таблиц с доступами:
mysqld --skip-grant-tables --user=mysql &
Обратите внимание: амперсанд (&) обязателен в конце команды. Он позволяет запустить инстанс MySQL в фоновом режиме, и показывает PID запущенного процесса, по которому мы потом сможем его закрыть.
Заходим в консоль MySQL:
mysql
И вводим команды:
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newPassword';
Выходим:
quit
И закрываем созданный инстанс по PID:
kill <PID>
Запускаем сервис MySQL и проверяем соединение:
service mysqld start
mysql -uroot -p