Odzyskanie hasła root’a dla bazy MySQL



Bardzo często zdarza się sytuacja, w której nie jest możliwe zalogowanie się na konto roota dla bazy danych MySQL. Tym bardziej jest to problematyczne kiedy nawet podając prawidłowe dane logowania otrzymujemy komunikat:

ERROR 1045 (28000): Access denied for user ‚root’@’localhost’ (using password: YES)

Również podobny komunikat możemy uzyskać próbując się zalogować poprzez panel phpmyadmin:

phpMyadmin

Co w takie sytuacji zrobić?

Okazuje się, że rozwiązanie tego problemu nie jest specjalnie skomplikowane. Wystarczy wykonać następujące czynności i ponownie będziemy mogli logować się za pomocą konta roota. Inną kwestią pozostaje bezpieczeństwo i pojawia się pytanie czy warto logować się za pomocą konta roota? Nie mniej jednak w tym przypadku skupiamy się tylko i wyłącznie na kwestiach związanych z odzyskaniem hasła.

W pierwszej kolejności należy zatrzymać działanie bazy MySQL, wydając polecenie (oczywiście wykonujemy to z poziomu konsoli serwera i na koncie root’a):

# /etc/init.d/mysql stop

Następnie warto sprawdzić za pomocą polecenia:

# /etc/init.d/ps aux | grep mysql

czy nie „wiszą” jakieś procesy mysql. Jeśli tak należy je pozamykać stosując np. polecnie kill.

Następnie uruchamiamy serwer MySQL z pominięciem sprawdzania uprawnień użytkownika:

# mysqld_safe --skip-grant-tables &

Następnie łączymy się z bazą danych za pomocą konta roota z pominięciem sprawdzania hasła:


[root@trustcom /]# mysql -u root mysql


Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is *** to server version: ****

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

mysql>

Tym samym uzyskaliśmy dostęp do konsoli MySQL i możemy dokonać odpowiednich zmian aby ponownie mieć możliwość logowania się jako root. W tym celu wydajemy następującą komendę:

mysql> UPDATE user SET password=PASSWORD("nowe_haslo") WHERE User='root' AND Host='localhost';

Oczywiście w miejscu nowe_haslo należy wpisać swoje nowe hasło dla konta root.

a następnie:

mysql> FLUSH PRIVILEGES;

Teraz nie pozostaje Nam nic innego jak wyjść z konsoli MySQL i zrestartować MySQL

mysql> quit;
Bye

Zatrzymujemy MySQL

# killall mysqld

I uruchamiamy ponownie, już w normalnym trybie pracy:

# /etc/init.d/mysql start

Teraz nie pozostaje Nam nic innego jak sprawdzić czy wprowadzone zmiany są poprawne i co najważniejsze…czy działają?

Oczywiście z poziomu konsoli serwera wydajemy następujące polecenie:


[root@trustcom /]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is to server version:

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

mysql>

Jak widać wprowadzone zmiany odniosły skutek i możemy się logować do MySQL na konto roota.

Więcej na temat resetowania hasła dla bazy MySQL można znaleźć w oficjalnej dokumentacji projektu: http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html

Tags: , ,

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

Comments are closed.