Как сбросить пароль 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.
- Как установить MySQL 8 в CentOS, RHEL и Fedora
- 15 полезных советов по настройке и оптимизации производительности MySQL
- 12 практик обеспечения безопасности MySQL для Linux
- 4 полезных инструмента командной строки для мониторинга производительности MySQL
- Команды администрирования базы данных MySQL
Заключение
В этой статье вы узнали, как сбросить утерянный пароль root для сервера MySQL 8.0. Надеюсь, процесс был легким.