Method 1: --skip-grant-tables (Universal)
sudo systemctl stop mysql
sudo mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!';
EXIT;
sudo killall mysqld_safe mysqld
sudo systemctl start mysqlMethod 2: init-file (Recommended for MySQL 8.0)
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!';" > /tmp/reset.sql
sudo systemctl stop mysql
sudo mysqld --init-file=/tmp/reset.sql --user=mysql &
sleep 5 && sudo killall mysqld
rm /tmp/reset.sql
sudo systemctl start mysqlOn Ubuntu, MySQL may use unix_socket auth — try
sudo mysql first. If it works, change password with ALTER USER.After resetting root password: update database credentials in all app config files (.env, wp-config.php) or your site will break.