root  / my Debian tips&tricks  / recover mysql root password 

Official Debian logo

Собствено не раз забывал пароль рута на mysql, да и поленившись поставить нормальный пароль, потом хочется его сменить. В общем у меня смена его не проходит гладко, поэтому здесь расскажу про восстановление:
  1. /etc/init.d/mysql stop
  2. /usr/bin/mysqld_safe --user=root --skip-grant-tables
    Если необходимо использовать эту же консоль далее, то в конце команды через пробел пишем амперсанд.
  3. Если на предыдущем этапе Вы встретили что-то типа такого:
    mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
    Тогда делаем следующее:
    mkdir -p /var/run/mysqld
    chown mysql:mysql /var/run/mysqld
  4. Открываем ещё одну консоль (или Ctrl+Z в текущей):
    mysql -u root
  5. Для MySQL 5.7.6 и новее, а также для MariaDB 10.1.20 и новее используем:
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-passwd';
    В противном случае:
    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new-passwd');
    Однако, если окажется так, что ALTER не сработает, то используем:
    UPDATE mysql.user SET authentication_string = PASSWORD('new-passwd') WHERE User = 'root' AND Host = 'localhost';
    Обратите вниманиее, после этих манипуляций необходимо выполнить:
    FLUSH PRIVILEGES;
  6. Найти все процессы mysql и отправить им SIGTERM для сообщения процессу мягко выйти после завершения операций очистки
    sudo kill `sudo cat /var/run/mysqld/mysqld.pid`
  7. Затем запустить mysql как обычно и попытаться в него зайти с новым паролем.
И ещё на всякий случай две mysql-команды на привилегии:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'pass' WITH GRANT OPTION;
FLUSH PRIVILEGES;
FB LJ