В нежелан случай на забравяне или загуба на вашата MySQL root парола, със сигурност ще ви е необходим начин да я възстановите по някакъв начин. Това, което трябва да знаем, е, че паролата се съхранява в таблицата на потребителите. Това означава, че трябва да намерим начин да заобиколим удостоверяването на MySQL, за да можем да актуализираме записа на паролата.
За щастие има лесна за постигане и този урок ще ви преведе през процеса на възстановяване или нулиране на root парола във версия на MySQL 8.0.
Според документацията на MySQL има два начина за нулиране на root паролата за MySQL. Ще прегледаме и двете.
Нулирайте MySQL Root парола с помощта на –init-file
Един от начините за нулиране на root паролата е да създадете локален файл и след това да стартирате услугата MySQL с помощта на --init-file
опция, както е показано.
# vim /home/user/init-file.txt
Важно е да се уверите, че файлът е четим от потребителя на mysql. В този файл поставете следното:
ALTER USER 'root'@'localhost' IDENTIFIED BY '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 и по време на процеса тя ще изпълни init-файла, който сте създали и по този начин паролата за 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
Нулиране на MySQL Root парола с помощта на –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. Надявам се, че процесът е бил лесен.