Поиск по сайту:

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


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

К счастью, этого легко достичь, и это руководство проведет вас через процесс восстановления или сброса пароля root в версии MySQL 8.0.

Согласно документации MySQL, существует два способа сброса корневого пароля MySQL. Мы рассмотрим оба.

Сброс пароля root MySQL с помощью –init-file

Один из способов сброса пароля root — создать локальный файл, а затем запустить службу MySQL, используя параметр --init-file, как показано.

vim /home/user/init-file.txt

Важно убедиться, что файл доступен для чтения пользователю MySQL. В этот файл вставьте следующее:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

В приведенном выше примере замените «new_password» на пароль, который вы хотите использовать.

Теперь убедитесь, что служба MySQL остановлена. Вы можете сделать следующее:

systemctl stop mysqld.service     # for distros using systemd 
/etc/init.d/mysqld stop           # for distros using init

Затем выполните следующее:

mysqld --user=mysql --init-file=/home/user/init-file.txt --console

Это запустит службу MySQL, и во время процесса она выполнит созданный вами файл инициализации, и, таким образом, пароль для пользователя root будет обновлен. Обязательно удалите файл после сброса пароля.

Обязательно остановите сервер и после этого запустите его в обычном режиме.

systemctl stop mysqld.service        # for distros using systemd 
systemctl restart mysqld.service     # for distros using systemd 

/etc/init.d/mysqld stop              # for distros using init
/etc/init.d/mysqld restart           # for distros using init

Теперь вы сможете подключиться к серверу MySQL как root, используя новый пароль.

mysql -u root -p

Сброс пароля root MySQL с помощью –skip-grant-tables

Второй вариант — запустить службу MySQL с опцией --skip-grant-tables. Это менее безопасно, поскольку, пока служба запускается таким образом, все пользователи могут подключаться без пароля.

Если сервер запущен --skip-grant-tables, опция --skip-networking автоматически активируется, поэтому удаленные подключения будут недоступны.

Сначала убедитесь, что служба MySQL остановлена.

systemctl stop mysqld.service     # for distros using systemd 
/etc/init.d/mysqld stop           # for distros using init

Затем запустите службу со следующей опцией.

mysqld --skip-grant-tables --user=mysql &

Затем вы можете подключиться к серверу MySQL, просто запустив.

mysql

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

FLUSH PRIVILEGES;

Теперь вы можете запустить следующий запрос, чтобы обновить пароль. Обязательно замените «new_password» фактическим паролем, который вы хотите использовать.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_passowrd';

Теперь остановите сервер MySQL и запустите его в обычном режиме.

systemctl stop mysqld.service        # for distros using systemd 
systemctl restart mysqld.service     # for distros using systemd 

/etc/init.d/mysqld stop              # for distros using init
/etc/init.d/mysqld restart           # for distros using init

Вы сможете подключиться с новым паролем.

mysql -u root -p

Возможно, вам также будет интересно прочитать следующие полезные статьи, связанные с MySQL.

  1. Как установить MySQL 8 в CentOS, RHEL и Fedora
  2. 15 полезных советов по настройке и оптимизации производительности MySQL
  3. 12 практик обеспечения безопасности MySQL для Linux
  4. 4 полезных инструмента командной строки для мониторинга производительности MySQL
  5. Команды администрирования базы данных MySQL
Заключение

В этой статье вы узнали, как сбросить утерянный пароль root для сервера MySQL 8.0. Надеюсь, процесс был легким.