Как сбросить пароль root в MySQL

Для получения доступа к MySQL или другие популярные системы управления базами данных, пользователю необходимо ввести данные аутентификации, так называемые логин и пароль к базе. Это стандартный процесс авторизации.

Учетная запись root создается автоматически во время установки. По своей задумке она напоминает привилегированную учетную запись суперпользователя в системе Линукс.

Обычно пароль вводится пользователем вручную, по окончанию процесса установки. Если юзер системы сохраняет личную информацию, у него не должно возникнуть трудностей с авторизацией в дальнейшем, однако на практике пароль забывается или не записывается, получается, что ценная информация утеряна.

Не торопитесь расстраиваться, поскольку подобные проблемы решаются легко и быстро, для этого необходимо выполнить обычный сброс пароля.

Сбрасываем при помощи init файла

Алгоритм действий простой:

  1. создаем файл;
  2. затем записываем sql запрос в файл;
  3. останавливаем сервис mysql;
  4. запускаем сервис mysql с указанием init файла.

С помощью редактора nano создадим файл init-sql, при этом он должен быть доступен для чтения.

# nano /home/ya/init-sql

Здесь:

  • nano - название консольного редактора;
  • ya - домашний каталог пользователя ya;
  • init-sql - название нового файла.

Далее копируем строчку ниже в буфер обмена и вставляем в init-sql (горячие клавиши для вставки текста из буфера CTRL + U)

UPDATE mysql.user SET password=password('new-parol') WHERE user='root';

где "new-parol" - это новый пароль юзера root.

Init файл

Останавливаем сервис mysql.

# systemctl stop mysql

Далее нужно выполнить файл:

# mysqld --user=musql --init-file=/home/ya/init-sql --console

Чтобы всё сработало, как положено, ждем несколько минут.

Если процесс завис - останавливаем его.

Теперь запустим mysql традиционным способом. При авторизации в системе вводим новый пароль, в моем случае это "new-parol":

mysql -u root -p

Смотрим видео аналогичный пример с init файлов только уже в windows.

Как сбросить пароль при помощи SKIP-GRANT-TABLES

Рассмотрим альтернативный и более безопасный вариант сброса пароля в свободной базе данных. Запустите сервис с данным параметром --skip-grant-tables. Этот режим позволит пользователю авторизоваться в системе без необходимости ввода личных данных (логин и пароль). Останавливаем сервис при помощи:

$ sudo systemctl stop mysql

Команда для запуска системы в ручном режиме:

$ sudo mysqld --user=mysql --skip-grant-tables

Далее вам понадобится консоль управления системой. Команда для запуска:

$ mysql -u root

Подгрузите таблицы привилегий юзеров:

$ FLUSH PRIVILEGES;

Пришло время сменить пароль, вводим запрос:

$ UPDATE mysql.user SET password=password ('new-parol') WHERE user='root';

Далее выходим:

exit
Пройдите авторизацию от имени суперпользователя:

mysql -u root -p

Заключение

Из этой статьи вы узнали, как произвести сброс password MySQL для восстановления административного доступа к системе. Каждый из представленных выше способов удобен своей простотой и понятностью. Выберите подходящий вариант и приступите от теории к практике!

Важное примечание: код сервиса часто меняется разработчиками, поэтому некоторые команды могут не сработать. Данная проблема не представляет особой сложности –  она решается быстро, если знать одну маленькую хитрость. Используйте в этих целях универсальную команду UPDATE.

Рекомендация пользователю: позаботьтесь о том, чтобы новый пароль рута был достаточно безопасным. Храните личную информацию в надежном месте.