Ostatnio (nie wiem kiedy to pisze, jest to ten sam dzień – ale kiedy nacisnę przycisk „Opublikuj” dla tego wpisu to już nie wiem… ;-)) pisałem o odzyskiwaniu hasła do konta administratora (root).

Dziś kontynuacja wątku – ale będziemy odzyskiwać dostęp do konta root dla serwera baz danych (MySQL).

VPS (Ubuntu/Debian) i odzyskiwanie dostępu do konta root dla MySQL

Metod jest kilka, większość jest podobna – różnią się szczegółami… Na tyle istotnymi, że nie zawsze chcą działać prawidłowo… ;-)

Dlatego postaram się opisać krok po kroku moim zdaniem 2 najprostsze, a na pewno takie która jeszcze mnie nie zawiodły.

MYSQL root recorvery z „skip-grant-tables”

Zaczynamy od zalogowania się do serwera (po SSH, bo ew. hasło do konta root do systemu już odzyskaliśmy), i bierzemy się do pracy:

Zatrzymujemy serwer baz danych (MySQL):

sudo service mysql stop

Następnie uruchamiamy go w „trybie awaryjnym”:

sudo mysqld_safe --skip-grant-tables &

Po czym logujemy się do MySQL (hasło puste):

mysql -u root

I wykonujemy kolejno polecenia (po każdym [enter]):

use mysql;
 update user set password=PASSWORD("nowe_haslo") where User='root';
 flush privileges;
 quit

Teraz wystarczy tylko zrestartować serwer MySQL:

sudo service mysql stop
sudo service mysql start

lub

sudo service mysql restart

I już można zalogować się za pomocą nowego hasła:

mysql -u root -p

Jak widać – metoda prosta i szybka, choć kiedyś z jakichś przyczyn nie chciała zadziałać i wtedy uratowała mi skórę kolejna metoda, którą wtedy zapisałem sobie w pliku „ku pamięci”… Choć przyznam, że dawno nie testowałem – ale mam nadzieję, że nic nie pomylę:

MYSQL root recorvery z „init-file”

Również zaczynamy od zatrzymania serwera MySQL:

sudo service mysql stop

Następnie tworzymy „plik pomocniczy” z odpowiednimi parametrami logowania:

echo "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'haslo' WITH GRANT OPTION;"> /root/mysql-temp

Uruchamiamy ponownie serwer MySQL, ale w trybie „awaryjnym” z naszym plikiem jako parametrem:

sudo mysqld_safe --init-file=/root/mysql-temp &

I logujemy się do MySQL jako root, korzystając ze zdefiniowanych w pliku pomocniczym parametrów (hasło: haslo):

mysql -u root -p

Po czym już w ramach MySQL wykonujemy kilka prostych poleceń – po każdym naciskamy [enter]:

use mysql;
 update user set password=PASSWORD("nowe_hasło") where User='root';
 flush privileges;
 exit

I wyłączamy serwer by uruchomić go już w trybie normalnym, z nowo zdefiniowanym hasłem dla użytkownika root:

sudo service mysql stop
sudo service mysql start

lub

sudo service mysql restart

Dalej pewnie już wiecie co i jak… W innym wypadku – choć nie tylko – polecam phpMyAdmin :-)

(!) Zgłoś błąd na stronie
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Patryk