Для начала неплохо узнать какая у вас версия MySQL - эта инфа может пригодиться если прийдется искать решение проблемы именно для конкретной версии софта:
mysql --version
Вывод может быть примерно таким:
mysql Ver 8.0.21-0ubuntu0.20.04.2 for Linux on x86_64 ((Ubuntu))
Далее, останавливаем MySQL:
sudo systemctl stop mysql
Теперь выполните:
sudo systemctl edit mysql
Скорее всего, этот файл у вас пустой. Добавьте туда такие строки, это скажет MySQL не проверять привилегии пользователей при перезапуске:
[Service]
ExecStart=
ExecStart=/usr/sbin/mysqld --skip-grant-tables --skip-networking
Далее, перезапустим конфигурацию MySQL:
sudo systemctl daemon-reload
И теперь запустим MySQL:
sudo systemctl start mysql
Теперь можно авторизоваться в MySQL как root и система не спросит пароль:
sudo mysql -u root
Теперь зададим новый пароль для root:
use mysql;
update user set authentication_string=PASSWORD("mynewpassword") where User='root';
flush privileges;
quit
После того как пароль задан, восстановим конфигурацию для запуска MySQL:
sudo systemctl revert mysql
Получим примерно такой вывод:
Removed /etc/systemd/system/mysql.service.d/override.conf.
Removed /etc/systemd/system/mysql.service.d.
И в заключение:
sudo systemctl daemon-reload
И напоследок:
sudo systemctl restart mysql
Осталось убедиться что пароль успешно изменен:
mysql -u root -p