Źle wpisane hasło do MySQL podczas zmiany, brak dostępu

Witajcie!

Udało mi się postawić już całkowicie sprawny serwer WWW, lecz w oryginalnej konfiguracji nie było ustawionego hasła do bazy - tylko pustka. Więc do konta root w bazie postanowiłem dodać hasło… Wszystko byłoby ok gdyby nie moja super klawiatura która czasami nie załapie wciśnięcia klawisza i okienko, które nie prosiło o ponowne wpisania hasła dodatkowo je zakrywając. Próbowałem już różnych kombinacji i nic z tego. :?

Wygoglowałem kilka poradników dotyczących zmiany hasła bez podawania starego, ale to kończy się na niemocy uruchomienia bazy w innym trybie za pomocą takiej komendy:

# mysqld_safe -–skip-grant-tables &

Proszę o pilną pomoc. Zależy mi na czasie.

Ps. - System to PCLinuxOS, a logować do bazy próbuję się poprzez Webmina i to właśnie przez jego interfejs zmieniałem hasło.

Czym się objawia niemoc uruchomienia silnika baz danych?

U mnie zadziałała procedura z poniższego linka.

>> Klik <<

[root@localhost ~]# mysqld_safe --skip-grant-tables &

[1] 5681

[root@localhost ~]# 121031 17:15:32 mysqld_safe Logging to '/var/lib/mysql/localhost.localdomain.err'.

121031 17:15:32 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

121031 17:15:38 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended


[1]+ Done mysqld_safe --skip-grant-tables

[root@localhost ~]# mysqld -u root

121031 17:18:06 [Warning] Ignoring user change to 'root' because the user was set to 'mysql' earlier on the command line


121031 17:18:06 [ERROR] Function 'ARCHIVE' already exists

121031 17:18:06 [ERROR] Couldn't load plugin named 'ARCHIVE' with soname 'ha_archive.so'.

121031 17:18:07 InnoDB: Initializing buffer pool, size = 8.0M

121031 17:18:07 InnoDB: Completed initialization of buffer pool

121031 17:18:07 InnoDB: Started; log sequence number 0 44233

121031 17:18:07 [ERROR] mysqld: unknown option '--federated'

121031 17:18:07 [ERROR] Aborting


121031 17:18:07 InnoDB: Starting shutdown...

121031 17:18:12 InnoDB: Shutdown completed; log sequence number 0 44233

121031 17:18:12 [Note] mysqld: Shutdown complete


[root@localhost ~]# mysql> use mysql

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

I nic później dalej nie można z tym zrobić.

Po wpisaniu komendy do grant-tables trzeba pobudzić konsolę enterem bo inaczej nic się nie dzieje.

W linku który Ci podałem, masz po kolei wypisane komendy, które musisz podać po zatrzymaniu silnika.

Najpierw wyłączasz silnik:

# /etc/rc.d/mysqld stop

Wydajesz polecenie:

# mysqld_safe --skip-grant-tables &

włącza ono silnik bazy w trybie dostępu nie wymagającego hasła. Podłączasz się do silnika:

# mysql -u root mysql

Po zalogowaniu wykonujesz kolejno zapytania:

mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';

mysql> FLUSH PRIVILEGES;

Odłączas się od silnika:

mysql> exit

Na koniec restartujesz silnik:

# /etc/rc.d/mysqld restart

Sprawdzasz czy procedura zadziałała, przez zalogowanie nowym hasłem:

# mysql -u root -p

EDIT:

W zapytaniu zamiast MyNewPass podaj swoje nowe hasło.

Wszystko robię po kolei.

Po wpisaniu

mysqld_safe --skip-grant-tables &

Wyrzuciło:

[root@localhost ~]# 121031 19:07:22 mysqld_safe Logging to '/var/lib/mysql/localhost.localdomain.err'.

121031 19:07:22 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

121031 19:07:28 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

I nie pokazała się linijka do wpisywania, no chyba że zadziałamy Enterem - wtedy wyrzuca jeszcze to i już pojawia się linijka do wpisywania (#).

[1]+ Done mysqld_safe --skip-grant-tables

Ogólna całość:

[root@localhost ~]# /etc/rc.d/init.d/mysqld-max stop

Shutting down MySQL: .... [OK]

[root@localhost ~]# mysqld_safe --skip-grant-tables &

[1] 18646

[root@localhost ~]# 121031 19:07:22 mysqld_safe Logging to '/var/lib/mysql/localhost.localdomain.err'.

121031 19:07:22 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

121031 19:07:28 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended


[1]+ Done mysqld_safe --skip-grant-tables

[root@localhost ~]#

Ps. - Wpisuję mysqld-max bo taki mam pakiet. Na samo mysqld nie reaguje i twierdzi że nie ma takiej komendy.

Dodane 31.10.2012 (Śr) 23:47

Problem rozwiązany! W zmianie hasła nie wiedzieć czemu przeszkadzał pakiet MySQLd-MAX. Po jego usunięciu normalnie dało radę zmienić hasło za pomocą metody opisanej przez LeserGD’a.