СБРОС ПАРОЛЯ ROOT В MYSQL И MARIADB
- Главная
- >
- Статьи и переводы
- СБРОС ПАРОЛЯ ROOT В MYSQL И MARIADB
- >
Если вы забыли или потеряли пароль пользователя 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, чтобы выйти после выполнения операции очистки.
# 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
Команда должна запросить пароль пользователя ro