W niefortunnym przypadku zapomnienia lub utraty hasła roota 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, a ten samouczek poprowadzi Cię przez proces odzyskiwania lub resetowania hasła roota w wersji MySQL 8.0.
Zgodnie z dokumentacją MySQL istnieją dwa sposoby na zresetowanie głównego hasła MySQL. Sprawdzimy oba.
Zresetuj hasło roota MySQL za pomocą –pliku-init
Jednym ze sposobów na zresetowanie hasła roota jest utworzenie pliku lokalnego, a następnie uruchomienie usługi MySQL za pomocą --init-file
opcja, 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 elementy:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
W powyższej zmianie „nowe_hasło ” z hasłem, którego chcesz użyć.
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 plik init, który utworzyłeś, a tym samym hasło dla użytkownika root zostanie zaktualizowane. Pamiętaj, aby usunąć plik po zresetowaniu hasła.
Pamiętaj, aby zatrzymać serwer i 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 być w stanie połączyć się z serwerem MySQL jako root przy użyciu 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 za pomocą --skip-grant-tables
opcja. Jest to mniej bezpieczne, ponieważ gdy usługa jest uruchomiona w ten sposób, wszyscy użytkownicy mogą łączyć się bez hasła.
Jeśli serwer jest uruchomiony --skip-grant-tables
, opcja dla --skip-networking
jest automatycznie aktywowany, 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 za pomocą --skip-grant-tables
opcji, będziemy musieli przeładować granty. W ten sposób 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 aktualne 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
Połączenie powinno być możliwe przy użyciu nowego hasła.
# mysql -u root -p
Możesz również przeczytać te przydatne artykuły związane z 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 Linuksa
- 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.