Работаем в терминале: сброс пароля пользователя root в MySQL
Все мы не без греха и иногда не соблюдение элементарных правил приводит к тому, что мы мучительно "ломаем" голову в попытке вспомнить пароль. Да, мы все прекрасно знаем, что логин и пароль от сервиса, необходимо где-либо записать, чтобы потом успешно им воспользоваться, ведь не даром есть пословица: "Подальше положишь - поближе возьмешь". Но существует - это пресловутое "но".... и наше извечное "авось" и "небось": небось - не забуду, авось - вспомню. Мы благополучно игнорируем это правило, не всегда конечно, но именно тот пароль, который мы решили записать потом, потому что сейчас надо быстро доделать, лень искать ручку и блокнот, кто-то нас отвлёк и т.д., мы начинаем вспоминать, причем, времени ещё меньше, чем было тогда, когда мы его не записали. Так произошло и со мной - я забыл пароль пользователя root от сервера MySQL. Сегодня мы рассмотрим способ сброса пароля пользователя root от сервера MySQL. Данная инструкция работает на OS Linux Ubuntu 18.04-20.04 и версии MySQL - 14.14 Distrib 5.7.29.
И так, приступим.
1. Открываем терминал и останавливаем текущую службу MySQL:
sudo systemctl stop mysql
2. Создаем каталог /var/run/mysqld который будет использоваться процессом MySQL для хранения и доступа к файлу сокета, а также назначаем каталогу необходимые права доступа:
sudo mkdir -p /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld
3. Запускаем сервер MySQL со следующими параметрами, не забываем знак амперсанд (&) в конце строки, для работы сервиса в фоне:
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
4. Убеждаемся, что сервис запущен и работает:
jobs
[1]+ Запущен sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
5. После запуска сервиса с такими параметрами мы можем получить доступ к серверу MySQL без пароля. Входим командой:
mysql -u root
6. Теперь, когда мы попали в консоль сервера MySQL мы можем сбросить установленный ранее пароль пользователя root следующей последовательностью запросов:
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> USE mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> UPDATE user SET authentication_string=PASSWORD("ROOT-PASSWORD") WHERE User='root';
Query OK, 1 row affected, 1 warning (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 1
mysql> UPDATE user SET plugin="mysql_native_password" WHERE User='root';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
mysql> quit
Bye
Обратите внимание на (;) в конце каждого запроса, не забывайте про них. С помощью этих запросов, мы установили пароль "ROOT-PASSWORD" для пользователя "root".
7. Завершаем запущенный нами процесс mysqld:
sudo pkill mysqld
8. Проверяем выполнение предыдущей команды:
jobs
[1]+ Завершён sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking
9. Запускаем сервис MySQL в штатном режиме:
sudo systemctl start mysql
10. После того, как мы изменили пароль пользователя root, мы можем войти в сервис используя только что установленный пароль:
mysql -u root --password=ROOT-PASSWORD
На этом, миссия по восстановлению доступа к базе данных успешно завершена и контроль над сервисом восстановлен. ))
Надеюсь из этой статьи Вы извлечёте полезный урок - записывать важные пароли в специальный блокнотик и неважно какой он: бумажный или электронный. Ну, а если нет, то инструкция, вам во всяком случае, поможет Вам сбросить забытый пароль.
До скорых встреч!