Восстановление пароля root в MySQL
Categories:
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
-
Выйдите из MySQL-консоли:
EXIT;
-
Завершите процесс
mysqld_safe
:sudo killall mysqld_safe
-
Перезапустите 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 недоступен)
-
Откройте командную строку от имени администратора.
-
Перейдите в папку с MariaDB (например,
C:\Program Files\MariaDB\bin
). -
Запустите:
mysqld --skip-grant-tables
-
В другом окне выполните
mysql -u root
и смените пароль.
Важно!
-
Запишите новый пароль в надёжное место.
-
Удалите анонимных пользователей (если есть):
DROP USER ''@'localhost';
-
Настройте брандмауэр, чтобы запретить внешний доступ к порту 3306, если это не требуется.
Итог
- Остановили MariaDB.
- Запустили в безопасном режиме.
- Вошли без пароля и обновили его.
- Перезапустили сервис.
Если что-то пошло не так — проверьте логи (/var/log/mysql/error.log
) и попробуйте снова.