KrEdEnS | 2020-08-09 14:11:18 UTC | #1
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ż
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
Żeby sprawdzić wersję naszego serwera wpisujemy (ta wiadomość przyda się w kolejnych krokach):
mysql –version
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