Сброс пароля root в MySQL и MariaDB

Published by Leave your thoughts

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

Данное руководство поможет сбросить пароль пользователя root в MySQL и MariaDB.

Требования

Чтобы восстановить пароль MySQL или MariaDB, нужен:

  • Доступ к серверу, на который установлена СУБД.
  • Пользователь с поддержкой sudo.

1: Определение версии MySQL и MariaDB

Большинство современных дистрибутивов Linux поставляются с MySQL или MariaDB (аналог MySQL,полностью совместимый с этой БД). Способ восстановления пароля во многом зависит от версии СУБД.

Чтобы узнать версию программы, введите:

mysql --version

На экране появится такой вывод:

# MySQL
mysql  Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using  EditLine wrapper
# или MariaDB
mysql  Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1

Запишите название и версию СУБД: эти данные пригодятся в дальнейшем.

2: Остановка сервера БД

Чтобы изменить пароль root, отключите сервер баз данных.

# MySQL
sudo systemctl stop mysql
# MariaDB
sudo systemctl stop mariadb

3: Перезапуск базы данных без проверки привилегий

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

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

Чтобы запустить БД без таблиц привилегий, введите:

sudo mysqld_safe --skip-grant-tables --skip-networking &

Амперсанд (&) в конце команды переведёт её в фоновый режим, и вы сможете продолжить работу с терминалом.

Подключитесь к БД как root. Пароль не будет запрошен:

mysql -u root

Вы получите доступ к командной оболочке базы данных:

# MySQL
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
# MariaDB
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

4: Изменение пароля root

В современных версиях MySQL изменить пароль пользователя root можно с помощью команды ALTER USER. Однако данная команда не сработает без таблиц привилегий, которые вы отключили, чтобы получить доступ к БД.

Перезапустите таблицы привилегий с помощью команды:

FLUSH PRIVILEGES;

Теперь можно изменить пароль root.

В MySQL 5.7.6+ и MariaDB 10.1.20+ используйте команду:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

Примечание: Если команда ALTER USER не работает, это обычно свидетельствует о более серьезной проблеме. Вы можете попробовать изменить пароль с помощью UPDATE … SET.

UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';

В MySQL 5.7.5, MariaDB 10.1.20 и более ранних версиях СУБД введите:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');

Примечание: Вместо new_password укажите новый пароль пользователя root.

После этого нужно перезапустить таблицы привилегий.

После обновления пароля на экране должен появиться такой вывод:

Query OK, 0 rows affected (0.00 sec)

Пароль успешно изменен, так что теперь можно перезапустить сервер базы данных.

5: Перезапуск сервера

Остановите сервер баз данных, запущенный вручную в разделе 3. Эта команда находит (ID процесса) MySQL или MariaDB и отправляет SIGTERM, чтобы выйти после выполнения операции очистки.

Читайте также: Использование команд ps, kill и nice для управления процессами в Linux

# MySQL
sudo kill `cat /var/run/mysqld/mysqld.pid`
# MariaDB
sudo kill `/var/run/mariadb/mariadb.pid`

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

# MySQL
sudo systemctl start mysql
# MariaDB
sudo systemctl start mariadb

Убедитесь, что новый пароль работает:

mysql -u root -p

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

Заключение

Теперь вы знаете, как восстановить доступ суперпользователя к серверу MySQL и MariaDB.

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

Tags: ,

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>