Reset hasła MySQL na serwerze VPS

Tagi: #<Tag:0x00007f13925e5dd8> #<Tag:0x00007f13925e5c98> #<Tag:0x00007f13925e5bd0>

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 :slight_smile:

Poradnik miesiąca: listopad 2019

7lajków