Reset hasła mysql
Dobre hasło to podstawa. Żeby było bezpieczne, lepiej go nigdzie nie zapisywać, tylko trzymać w głowie. Niestety, pamięć ludzka jest wadliwa i można to hasło zapomnieć. Pół biedy gdy to hasło do jakiejś usługi gdzie możemy je zresetować przez maila. Niestety, ale hasło administratora do bazy MySQL do takich rzeczy się nie zalicza. W tym poradniku przedstawię metodę resetowania zapomnianego hasła roota do MySQL na serwerze vps. W tym celu na chwilę po prostu wyłączymy sprawdzanie haseł.
Zablokowanie dostępu zewnętrznego (jeśli był odblokowany)
Niekiedy zdarza się, że wystawiamy nasz serwer MySQL na świat, żeby umożliwić dostęp do bazy z wielu serwerów. Jako, że planujemy za chwileczkę wyłączyć hasła, bardzo ważne jest, żeby mieć pewność, że nikt nie wpadnie na naszą bazę i nie zacznie się nią bawić. W tym celu otwieramy plik /etc/mysql/mysql.conf.d/mysqld.cnf
i szukamy linii zaczynające jsię od bind-address
(okolice 43 linii) i jeżeli jej zawartość jest inna niż
bind-address = 127.0.0.1
to wykomentowywujemy ją stawiając z przodu #
i wpisujemy 127.0.0.1
jako adres. W efekcie powinniśmy uzyskać efekt podobny do tego:
#bind-address = 0.0.0.0
bind-address = 127.0.0.1
Teraz już na pewno nikt z zewnątrz nie dokopie się nam do serwera i możemy bezpiecznie wyłączyć zabezpieczenie hasłem.
Wyłączenie zabezpieczenia hasłem
Zaczynamy od wyłączenia już pracującego serwera MySQL
sudo systemctl stop mysql
Teraz możemy uruchomić serwer mysql w sposób który omija uwierzytelnianie użytkowników
sudo mysqld_safe --skip-grant-tables &
teraz możemy zalogować się na roota bez potwierdzania danych
Zmiana hasła roota
mysql -u root
i wykonać polecenie którym zmienimy hasło do roota
SET PASSWORD FOR root = 'noweHaslo';
Teraz już tylko wyłączamy nasz serwer poleceniem
shutdown;
Wychodzimy z shella MySQL
exit;
Ponowne uruchomienie serwera MySQL
Jeżeli wcześniej zmienialiśmy bind-address naszego serwera, to otwieramy znowu plik /etc/mysql/mysql.conf.d/mysqld.cnf
i przywracamy nasze poprzednie ustawienie bind-address, a potem uruchamiamy ponownie serwer MySQL
sudo systemctl start mysql
Teraz nasz serwer MySQL ponownie pracuje tak jak wcześniej, a użytkownik root ma już nowe hasło :)