Reset hasła MySQL / MariaDB na serwerze VPS

Poradniki
vps, zarządzanie, mysql
KrEdEnS
KrEdEnS Moderator Freebies

Wstęp

Cześć, zapewne nie tylko ja próbując zalogować się do rzadko używanej bazy danych zobaczyłem piękny komunikat ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES). W nerwach upewniam się, czy aby na pewno wpisałem poprawne hasło, może jakaś literówka albo źle wpisany użytkownik. No tak... nie tylko chwile są ulotne - hasła też :kappa:

Zablokowanie dostępu zewnętrznego (jeśli był odblokowany)

Ten podpunkt jest dosyć kluczowy, pisał o nim także @bopke w już dosyć leciwym poradniku https://lvlup.rok.ovh/t/reset-hasla-mysql-na-serwerze-vps/12594?u=kredens. W skrócie jeżeli mamy odblokowany dostęp z zewnątrz do bazy danych musimy go wyłączyć na czas operacji na otwartym sercu żeby żaden sąsiad złodziej :nosacz: nie zrobił nam z naszej bazy talibskiej wioski po ataku amerykanów :kappa:. Dobra ty kredens skończ tu pisać tylko tłumacz. Jeżeli mamy zainstalowaną bazę danych MySQL udajemy się do pliku /etc/mysql/mysql.conf.d/mysqld.cnf i szukamy złotego pociągu linijki, w której znajduje się fraza bind-address. W MariaDB podobnie, ale inaczej :thinksmart:. Wchodzimy do pliku /etc/mysql/mariadb.conf.d/50-server.cnf i również szukamy frazę bind-address. Jeżeli zawartość linijki wygląda tak:

bind-address = 127.0.0.1

No przechodzimy do kolejnego kroku. Gdy nasz adres się różni stawiamy obok bind-address stawiamy # i dopisujemy:

#bind-address = 0.0.0.0 bind-address = 127.0.0.1

Sprawdzenie wersji serwera bazy danych

Żeby sprawdzić wersję naszego serwera wpisujemy (ta wiadomość przyda się w kolejnych krokach):

mysql --version

Zatrzymanie serwera i reset hasła

Pierwszym krokiem będzie zatrzymanie serwera bazy danych:

sudo systemctl stop mysql

Dla serwera MariaDB możemy użyć polecenia (to wyżej też powinno zadziałać):

sudo systemctl stop mariadb

Gdy nasz serwer już stoi na stacji lokomotywa,Ciężka, ogromna i pot z niej spływa uruchamiamy go w trybie, który powstrzyma wczytanie tabelek. dodatkowo zabronimy mu korzystania z sieci (lepiej chuchać na zimne :nosacz:):

sudo mysqld_safe --skip-grant-tables --skip-networking &

W następnym kroku logujemy się do bazy jak gdyby nigdy nic się nie stało :thinksmart:

mysql -u root

Teraz grzecznie mówimy serwerowi: E ty kolego ale teraz to mi załaduj tabelki bo jak nie to... będzie apt-get purge :kappa:

FLUSH PRIVILEGES;

Dam dara dam 🎉 👏 no i docieramy do najważniejszego momentu - dobrego domowego obiadu zmiany hasła! Przypominamy sobie jaką wersję bazy danych mamy i postępujemy za niżej zapisanymi poleceniami:

Jeżeli nasz serwer MySQL jest w wersji 5.7.6 lub nowszej, a także MariaDB ma wersję 10.1.20 lub wyższą, użyjemy tłuczka do ziemniaków żeby zmienić hasło:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'ChrzaszczBrzmiWTrzcinie';

Gdzie ChrzaszczBrzmiWTrzcinie to nasze nowe hasło!

Sprawa ma się inaczej jeżeli nasz serwer MySQL mamy w wersji 5.7.5 lub starszej a MariaDB 10.1.20 lub starszej:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('Maki5GramOdleciecSam');

Gdzie Maki5GramOdleciecSam to nasze nowe hasło!

Zostaje nam już tylko wyłącznie bazy danych komendą:

shutdown;

I wyjście z niej wpisaniem polecenia:

exit;

UWAGA! Jeżeli zmieniałeś bind-address w drugim kroku to odpowiedni czas na przywrócenie starej konfiguracji!

Finalnie zostaje nam tylko włączyć bazę danych i cieszyć się nowym serwerem z https://www.lvlup.pro/pl świeżo zmienionym hasłem!

Włączamy bazę danych poleceniem:

sudo systemctl start mysql

Lub w przypadku MariaDB (to wyżej też powinno zadziałać):

sudo systemctl start mariadb

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

Bardzo :thinking: ciekawy 🤒 poradnik. Ale trochę 🎉 ciężko się 😂 czyta.

KrEdEnS
KrEdEnS Moderator Freebies

Możliwe :thinking:, że troszkę 😅 przegiąłem 💔 z emoji