Reset hasła MySQL / MariaDB na serwerze VPS

KrEdEnS | 2020-08-09 14:11:18 UTC | #1

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ż

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://forum.lvlup.pro/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 nie zrobił nam z naszej bazy talibskiej wioski po ataku amerykanów . 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 . 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 ):

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

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

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

FLUSH PRIVILEGES;

Dam dara dam :tada: :clap: 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 | 2020-08-09 13:55:36 UTC | #2

Bardzo :thinking: ciekawy :facewiththermometer: poradnik. Ale trochę :tada: ciężko się :joy: czyta.


KrEdEnS | 2020-08-09 13:58:32 UTC | #3

Możliwe :thinking:, że troszkę :sweatsmile: przegiąłem :brokenheart: z emoji