СБРОС ПАРОЛЯ ROOT В MYSQL И MARIADB

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

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

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

# 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

# MariaDB

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

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

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

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

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

Подключитесь к БД как 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. Однако данная команда не сработает без таблиц привилегий, которые вы отключили, чтобы получить доступ к БД.

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

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

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

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

 

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

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

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

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

Query OK, 0 rows affected (0.00 sec)

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

Выйдете из сервера базы данных

# MySQL

# MariaDB

MariaDB [(none)]> exit;

Bye

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

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

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

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

# MariaDB

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

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