Сброс пароля в MySQL и MariaDB
Как сбросить пароль root в MySQL и MariaDB?
С базами данных работает каждый второй сайт. И каждый из них нужно администрировать. Во время работы могут происходить всякие неприятные ситуации. Одной из самых распространенных является «Ой! Я забыл пароль». В ситуации с MySQL и MariaDB его можно сбросить. Однако, для этого вам потребуется учетная запись с sudo, а также доступ к серверу.
MySQL входит в состав абсолютно всех нынешних сборок Linux. В качестве альтернативы можно использовать 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
Теперь, чтобы поменять пароль root, нам нужно отключить сервер базы данных. Это делает вот такой код:
# MySQL
sudo systemctl stop mysql
# MariaDB
sudo systemctl stop 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.
Если у вас современная версия MySQL, то для изменения пароля можно использовать команду ALTER USER. Но есть один нюанс, данная инструкция не будет работать, если отключена таблица привилегий. А мы ее отключили, чтобы появилась возможность получить доступ к базе данных. Таблицу привилегий нужно запустить заново, применяя команду:
FLUSH PRIVILEGES;
После осуществления данных манипуляций, вы можете изменять root-пароль. Но нужно учитывать версию баз данных, которые вы используете. Для MariaDB 10.1.20+ и MySQL 5.7.6+ пригодится команда:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Имейте ввиду, если у вас не сработала вышеописанная команда, то можно попробовать альтернативу в виде UPDATE … SET:
UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';
Если же у вас более старые версии баз данных, то наберите:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
Фраза «new_password» - это место для ввода вашего нового пароля. После того, как придумаете его и сохраните, таблицу привилегий придется перезапустить. Об успешных изменениях свидетельствует строка:
Query OK, 0 rows affected (0.00 sec)
Это свидетельство того, что ваш новый пароль успешно применен. Вы можете перезапускать сервер базы данных и продолжать работу.
Остановив сервер с помощью команды kill, которая способна найти 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
В результате вы увидите новый запрос ввести пароль.
Теперь вы знаете, каким образом можно восстановить потерянный доступ к правам суперпользователя на сервере MySQL и MariaDB. В качестве рекомендации, отметим, что все ваши пароли должны быть сложными, чтобы их невозможно было подобрать. Храните все ключи в надежном месте, чтобы, при необходимости, вы смогли быстро ими воспользоваться.
Опубликовано: Март 1, 2017