Восстановление пароля root в MySQL

Восстановление пароля root в MariaDB выполняется в несколько шагов: остановка сервиса, запуск в безопасном режиме (без проверки прав), смена пароля и перезагрузка. Вот подробная инструкция.

1. Остановка MySQL/MariaDB

Linux (systemd)

sudo systemctl stop mariadb

Linux (SysVinit)

sudo service mysql stop  # или sudo /etc/init.d/mysql stop

Windows

net stop mariadb

(Или через «Службы» в services.msc).


2. Запуск MySQL/MariaDB в безопасном режиме (без аутентификации)

sudo mysqld_safe --skip-grant-tables --skip-networking &
  • --skip-grant-tables — отключает проверку паролей.
  • --skip-networking — запрещает удалённые подключения (для безопасности).

Важно: Не закрывайте терминал, пока меняете пароль!


3. Подключение к MySQL/MariaDB без пароля

Откройте новый терминал и выполните:

mysql -u root

Теперь вы в консоли MariaDB без пароля.


4. Смена пароля root

Способ 1 (для MariaDB 10.4 и новее)

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'новый_пароль';

Способ 2 (для старых версий)

USE mysql;
UPDATE user SET password=PASSWORD('новый_пароль') WHERE User='root';
FLUSH PRIVILEGES;

Если root привязан к unix_socket (например, в Debian/Ubuntu)

UPDATE mysql.user SET plugin='mysql_native_password' WHERE User='root';
ALTER USER 'root'@'localhost' IDENTIFIED BY 'новый_пароль';
FLUSH PRIVILEGES;

5. Выход и перезапуск MySQL/MariaDB

  1. Выйдите из MySQL-консоли:

    EXIT;
    
  2. Завершите процесс mysqld_safe:

    sudo killall mysqld_safe
    
  3. Перезапустите MariaDB в обычном режиме:

    sudo systemctl start mariadb  # или sudo service mysql start
    

6. Проверка нового пароля

mysql -u root -p

Введите новый пароль. Если вход удался — пароль восстановлен!


Дополнительные сценарии

Если root не имеет прав (ошибка доступа)

Попробуйте создать временного пользователя с правами root:

GRANT ALL PRIVILEGES ON *.* TO 'tempadmin'@'localhost' IDENTIFIED BY 'temp_pass';
FLUSH PRIVILEGES;

После этого войдите как tempadmin и смените пароль root.

Windows (если mysqld_safe недоступен)

  1. Откройте командную строку от имени администратора.

  2. Перейдите в папку с MariaDB (например, C:\Program Files\MariaDB\bin).

  3. Запустите:

    mysqld --skip-grant-tables
    
  4. В другом окне выполните mysql -u root и смените пароль.


Важно!

  • Запишите новый пароль в надёжное место.

  • Удалите анонимных пользователей (если есть):

    DROP USER ''@'localhost';
    
  • Настройте брандмауэр, чтобы запретить внешний доступ к порту 3306, если это не требуется.


Итог

  1. Остановили MariaDB.
  2. Запустили в безопасном режиме.
  3. Вошли без пароля и обновили его.
  4. Перезапустили сервис.

Если что-то пошло не так — проверьте логи (/var/log/mysql/error.log) и попробуйте снова.