Забыли пароль root в MySQL? Восстановите доступ за 5 минут!

Забыли пароль root в MySQL? Восстановите доступ за 5 минут!

Представьте: вы заперты за дверью собственной базы данных. Все ваши данные — вот они, рядом, но вы не можете войти, потому что пароль root безнадежно забыт. Знакомая ситуация? Не отчаивайтесь! Эта проблема решается быстрее, чем вы думаете.

Мы подготовили для вас пошаговое руководство, которое вернет вам полный контроль над вашим MySQL или MariaDB. Вы узнаете два рабочих метода сброса пароля суперпользователя, даже если у вас нет ни малейшего представления о старом пароле.

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

Мы покажем вам конкретные команды для остановки и запуска служб, а также важные нюансы для разных версий СУБД. Больше не нужно паниковать или думать о переустановке. Все, что от вас требуется, — это доступ к серверу с правами sudo.

Готовы снова стать полноправным администратором своей базы? Читайте статью, выбирайте подходящий способ и возвращайте себе ключи от царства данных!


Для доступа к базе данных MySQL или MariaDB нужно ввести имя пользователя и пароль. Во время установки автоматически создаётся учётная запись пользователя root. Это аналог суперпользователя в Linux для MySQL. Он может выполнять все действия со всеми базами данных, а также создавать и удалять других пользователей.

Обычно, пароль для него не устанавливается, и вы можете задать его вручную уже после завершения установки. Но если вы забыли пароль или он был установлен автоматически, но вы его не знаете, то вам может понадобится его сбросить. Это можно сделать несколькими способами. В этой статье мы разберём, как выполняется сброс пароля root MySQL.

В статье я буду использовать Ubuntu и MariaDB, но эта инструкция подойдёт и для других дистрибутивов. В командах с systemctl для Mariadb следует использовать mariadb, а для MySQL - mysql или mysqld.


Содержание статьи

1. Сброс пароля с помощью init-file

При запуске сервиса MySQL можно указать файл, из которого будут выполнены команды sql сразу после запуска. Адрес этого файла указывается опцией --init-file. Но сначала давайте создадим файл, который будет изменять файл нашего пользователя:

vi /home/sergiy/init-file.txt

UPDATE mysql.user SET password=password('новый пароль') WHERE user='root';

Забыли пароль root в MySQL? Восстановите доступ за 5 минут!

Затем остановите сервис, если он запущен:

sudo systemctl stop mysql

Или:

sudo systemctl stop mariadb

Забыли пароль root в MySQL? Восстановите доступ за 5 минут!

Теперь осталось выполнить наш файл:

sudo mysqld --user=mysql --init-file=/home/sergiy/init-file.txt --console

Забыли пароль root в MySQL? Восстановите доступ за 5 минут!

Подождите минуту, чтобы всё успело сработать как нужно, а затем остановите этот процесс. В консоли команда сообщит started as proccess и PID процесса, этот PID нам и нужен, чтобы его остановить. Например:

sudo kill -TERM 5356

Забыли пароль root в MySQL? Восстановите доступ за 5 минут!

Далее запустите mysql обычным способом и попробуйте войти со своим новым паролем:

sudo systemctl start mariadb

mysql -u root -p

Сброс пароля с помощью skip-grant-tables

Кроме того, есть и другой способ сбросить пароль MySQL. Мы можем запустить сервис с параметром --skip-grant-tables. В этом режиме программа пропускает загрузку данных о пользователях и тогда вы можете авторизоваться без ввода пароля. Аналогично, сначала нужно остановить сервис:

sudo systemctl stop mariadb

Затем запустите mysql вручную с помощью такой команды:

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

Забыли пароль root в MySQL? Восстановите доступ за 5 минут!

Войдите в консоль управления mysql:

mysql -u root

Забыли пароль root в MySQL? Восстановите доступ за 5 минут!

Так как мы загрузились без таблиц привелегий пользователей, то эти таблицы необходимо подгрузить сейчас:

FLUSH PRIVILEGES;

Забыли пароль root в MySQL? Восстановите доступ за 5 минут!

Теперь можно сменить пароль для пользователя root:

UPDATE mysql.user SET password=password('новый пароль') WHERE user='root';

Забыли пароль root в MySQL? Восстановите доступ за 5 минут!

Затем закройте консоль клиента mysql:

exit

Завершите запущенный вручную сервис, таким же образом как в предыдущем пункте:

sudo kill -TERM 5356

И запустите mysql в нормальном режиме:

sudo systemctl start mariadb

Дальше вы можете авторизоваться от имени суперпользователя по этому паролю:

sudo mysql -u root -p

Но, нужно отметить, что для последних версий MariaDB это уже не нужно, так как программа поддерживает авторизацию без пароля если имя пользователя базы данных и имя учетной записи в системе совпадают. Поэтому, если вы хотите войти под root в консоль MySQL, достаточно запустить клиент через sudo.

Выводы

В этой статье мы рассмотрели, как выполняется сброс пароля MySQL Ubuntu. Разработчики постоянно что-то меняют в коде сервиса, поэтому в последних версиях команды ALTER USER или SET PASSWORD могут не работать. Поэтому мы используем универсальную команду UPDATE. Надеюсь, эта информация была для вас полезной.

Оставить комментарий


Кликните на изображение чтобы обновить код, если он неразборчив