Jak zresetować hasło roota w MySQL 8.0
W niefortunnym przypadku zapomnienia lub utraty hasła root do MySQL z pewnością będziesz potrzebować sposobu na jego odzyskanie. Musimy wiedzieć, że hasło jest przechowywane w tabeli użytkowników. Oznacza to, że musimy znaleźć sposób na ominięcie uwierzytelniania MySQL, abyśmy mogli zaktualizować rekord hasła.
Na szczęście jest to łatwe do osiągnięcia i ten samouczek poprowadzi Cię przez proces odzyskiwania lub resetowania hasła roota w wersji MySQL 8.0.
Zgodnie z dokumentacją MySQL istnieją dwa sposoby resetowania hasła root MySQL. Przeanalizujemy oba.
Zresetuj hasło roota MySQL za pomocą pliku –init
Jednym ze sposobów zresetowania hasła roota jest utworzenie pliku lokalnego, a następnie uruchomienie usługi MySQL za pomocą opcji --init-file
, jak pokazano.
vim /home/user/init-file.txt
Ważne jest, aby upewnić się, że plik jest czytelny dla użytkownika mysql. W tym pliku wklej następujące polecenie:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
W powyższym przypadku zmień „nowe_hasło” na hasło, którego chcesz używać.
Teraz upewnij się, że usługa MySQL jest zatrzymana. Możesz wykonać następujące czynności:
systemctl stop mysqld.service # for distros using systemd
/etc/init.d/mysqld stop # for distros using init
Następnie uruchom następujące polecenie:
mysqld --user=mysql --init-file=/home/user/init-file.txt --console
Spowoduje to uruchomienie usługi MySQL i podczas tego procesu wykona ona utworzony plik init, a tym samym hasło użytkownika root zostanie zaktualizowane. Pamiętaj, aby usunąć plik po zresetowaniu hasła.
Pamiętaj, aby zatrzymać serwer, a następnie uruchomić go normalnie.
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
Powinieneś teraz móc połączyć się z serwerem MySQL jako root, używając nowego hasła.
mysql -u root -p
Zresetuj hasło roota MySQL za pomocą –skip-grant-tables
Drugą opcją, jaką mamy, jest uruchomienie usługi MySQL z opcją --skip-grant-tables
. Jest to mniej bezpieczne, ponieważ podczas uruchamiania usługi wszyscy użytkownicy mogą łączyć się bez hasła.
Jeśli serwer jest uruchomiony --skip-grant-tables
, opcja --skip-networking
jest automatycznie aktywowana, więc połączenia zdalne nie będą dostępne.
Najpierw upewnij się, że usługa MySQL jest zatrzymana.
systemctl stop mysqld.service # for distros using systemd
/etc/init.d/mysqld stop # for distros using init
Następnie uruchom usługę z następującą opcją.
mysqld --skip-grant-tables --user=mysql &
Następnie możesz połączyć się z serwerem mysql, po prostu uruchamiając.
mysql
Ponieważ zarządzanie kontem jest wyłączone, gdy usługa jest uruchamiana z opcją --skip-grant-tables
, będziemy musieli ponownie załadować granty. Dzięki temu będziemy mogli później zmienić hasło:
FLUSH PRIVILEGES;
Teraz możesz uruchomić następujące zapytanie, aby zaktualizować hasło. Pamiętaj, aby zmienić „nowe_hasło” na rzeczywiste hasło, którego chcesz używać.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_passowrd';
Teraz zatrzymaj serwer MySQL i uruchom go normalnie.
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
Powinieneś móc połączyć się przy użyciu nowego hasła.
mysql -u root -p
Możesz także przeczytać poniższe przydatne artykuły dotyczące MySQL.
- Jak zainstalować MySQL 8 w CentOS, RHEL i Fedorze
- 15 przydatnych wskazówek dotyczących dostrajania i optymalizacji wydajności MySQL
- 12 praktyk bezpieczeństwa MySQL dla systemu Linux
- 4 Przydatne narzędzia wiersza poleceń do monitorowania wydajności MySQL
- Polecenia administracyjne bazy danych MySQL
Wniosek
W tym artykule dowiedziałeś się, jak zresetować utracone hasło roota dla serwera MySQL 8.0. Mam nadzieję, że proces był łatwy.