Вход
Русский
USD
Цены в иностранной валюте приведены информационно

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

Как сбросить пароль root в MySQL и MariaDB?

С базами данных работает каждый второй сайт. И каждый из них нужно администрировать. Во время работы могут происходить всякие неприятные ситуации. Одной из самых распространенных является «Ой! Я забыл пароль». В ситуации с MySQL и MariaDB его можно сбросить. Однако, для этого вам потребуется учетная запись с sudo, а также доступ к серверу.

Начать предстоит с определения версии MySQL и MariaDB.

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.

Как поменять пароль root?

Если у вас современная версия 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