Если вы забыли или потеряли пароль от сервера баз данных, его можно сбросить. Для этого вам понадобится root-доступ к серверу по SSH. Инструкция подойдет для следующих версий ПО:
- MySQL 8.0 и более ранние версии;
- Ubuntu 16.04, 18.04, 20.04.
В статье мы расскажем, как в MySQL сбросить пароль root.
В более поздних дистрибутивах к MySQL можно подключиться без ввода пароля. Такую возможность дает плагин auth_socket. Доступ без пароля зависит от того, какой пользователь ОС подключается к MySQL. По умолчанию доступ имеет только root-пользователь.
Чтобы проверить, какой у вас доступ, подключитесь к серверу и выполните команду:
mysql
Если настроен доступ без пароля, на экране вы увидите примерно следующее:
Если на MySQL настроен доступ по паролю, вы столкнётесь с ошибкой:
Доступ для пользователя root без использования пароля запрещён
Если доступ без пароля не настроен, а пароль утерян, воспользуйтесь нашей инструкцией.
Как сбросить root-пароль MySQL
Чтобы выполнить сброс пароля MySQL, подключитесь к вашему серверу по SSH и следуйте инструкции:
-
1
Откройте файл параметров MySQL командой:
nano /etc/mysql/my.cnf
-
2
Добавьте в конец файла три параметра:
[mysqld] skip-grant-tables skip-networking
MySQL reset root password
Если директива [mysqld] уже прописана в файле, добавьте только skip-grant-tables и skip-networking:
- skip-grant-tables — параметр, который пропускает проверку прав. Это позволит подключиться к MySQL без пароля любому пользователю.
- skip-networking — параметр, который запретит удалённые подключения к серверу БД на время сброса пароля.
- 3 Чтобы сохранить изменения, нажмите CTRL+S. Затем закройте редактор сочетанием клавиш CTRL+X.
-
4
Чтобы запустить MySQL с нужными параметрами, перезапустите сервер БД командой:
systemctl restart mysql.service
-
5
Подключитесь к серверу баз данных при помощи команды:
mysql
-
6
Перезагрузите привилегии:
FLUSH PRIVILEGES;
-
7
Поменяйте пароль при помощи команды:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
Вместо password введите свой новый пароль.
Если при выполнении команды возникнет ошибка неправильного синтаксиса, попробуйте другую команду:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('password');
Если возникнет ошибка «ERROR 1290 (HY000): The MySQL server is running with the —skip-grant-tables option so it cannot execute this statement», выполните команду из 6 шага.
-
8
Откройте конфигурационный файл:
nano /etc/mysql/my.cnf
-
9
Удалите из файла текст, который добавили во втором шаге:
[mysqld] skip-grant-tables skip-networking
Если на 2 шаге вы добавили только параметры skip-grant-tables и skip-networking, удалите только их.
Обратите внимание
Обязательно удалите опцию skip-grant-tables из конфигурационного файла после смены пароля. Если не удалить параметр, после перезапуска сервера баз данных подключаться к MySQL можно будет без пароля от имени любого пользователя.
- 10 Чтобы сохранить изменения, нажмите CTRL+S. Затем закройте редактор сочетанием клавиш CTRL+X.
-
11
Подключитесь к серверу баз данных:
mysql -uroot -p'password'
Вместо password напишите ваш новый пароль.
Готово, вы сбросили пароль от root-пользователя MySQL.
Помогла ли вам статья?
Спасибо за оценку. Рады помочь 😊