FAQ по восстановлению забытого пароля администратора в MySQL

Опубликовано: 16.05.2018


В данной статье описывается что делать если вы забыли администраторский пароль или случайно удалили самого root-пользователя. Статья ориентирована в первую очередь на новичков, поэтому описание всех действий изложено очень подробно, однако материал может оказаться небезынтересен и для более опытных пользователей.

Как восстановить забытый пароль администратора?

Пароли хранятся в базе в зашифрованном виде, поэтому восстановить забытый пароль нельзя, однако можно установить новый. Для этого нужно:

Перезапустить сервер в режиме --skip-grant-tables Установить новый пароль администратора Перезапустить сервер в обычном режиме

Теперь подробнее о каждом пункте. В режиме skip-grant-tables отключена проверка прав доступа и привилегий, иными словами, вы можете подключиться с пустыми логин/пароль и будете обладать при этом всеми возможными привилегиями.

Примечание. Обратите внимание, что другие пользователи, подключившие до выполнения вами команды flush privileges ; или перезагрузки сервера в обычном режиме, также будут обладать администраторскими правами.

MySQL сервер хранит информацию о привилегиях в таблицах привилегий служебной базы mysql. При старте сервера, содержимое таблиц привилегий загружается в память и в дальнейшей работе используется копия, находящаяся в памяти. Команда flush privileges ; обновляет данные о привилегиях, загруженные в память. Таким образом, данная команда отменяет режим skip-grant-table и включает проверку прав доступа и привилегий.

Примечание. Обратите внимание, что если вы напрямую редактируете содержимое таблиц привилегий базы mysql, с помощью команд insert , update , delete , то изменения сразу не вступят в силу, так как информация о пользовательских привелегиях, загруженная в память, останется неизменной.
Если использовать рекомендованные команды типа grant или set password , то изменения вступят в силу незамедлительно.