2012-01-20 15 views
8

Wieloletni czytelnik Stackoverflow, po raz pierwszy przesyłając pytanie.Błąd: "Odmowa dostępu dla użytkownika" debian-sys-maint "@" localhost "(przy użyciu hasła: TAK)"

Musiałem sprzętowo zrestartować mój dev laptop kilka dni temu z różnych powodów. Kiedy przyniosłem kopię zapasową, zrozumiałem, że mysqld nie jest już dostępny. Zwykle łączę się z rootem na lokalnej maszynie dev. Nie mogłem uruchomić/zatrzymać go za pomocą skryptów startowych, jak zwykle, więc jak zwykle zwróciłem się do różnych wyszukiwarek. Po konsultacji z Google, Bing i Duckduckgo.com nadal nie mogłem znaleźć rozwiązania tego problemu. Znalazłem rozwiązania podobnych problemów, ale wszystkie wymagały zmiany hasła wygenerowanego automatycznie dla debian-sys-maint i zalogowania się jako root, aby ustawić nowe, ale ponieważ nie mogę się zalogować jako root, to nie rozwiąże mojego problemu.

Czy ktoś wie o jakichkolwiek innych kandydatów do rozwiązania tego dylematu?

błąd: "Odmowa dostępu dla użytkownika" debian-sys-maint "@" localhost "(przy użyciu hasła: TAK)".

+2

Komunikat o błędzie sugeruje, że serwer mysql działa, ale dane logowania są nieprawidłowe. Perhabs to pytanie powinno zostać zadane na http://serverfault.com/? – Mchl

Odpowiedz

3

Wygląda na to, że użytkownik mógł przenieść do kosza tabele w bazie danych ("mysql"), które przechowują poświadczenia dostępu do wszystkich baz danych. Czy widzisz coś w dziennikach MySQL (/ var/log/mysql), które wskazuje na problem?

Jeśli wystąpi korupcja, podejście polegające na próbach naprawy zależy od mechanizmu przechowywania danych. Czy używasz MyISAM (domyślnie)? Jeśli tak, spróbuj wyłączyć demona i użyć myisamchk, aby spróbować naprawić.

Jeśli nie możesz naprawić, prawdopodobnie będziesz musiał przywrócić z kopii zapasowych (masz kopie zapasowe, prawda?) Lub reinicjować MySQL (prawdopodobnie po prostu przeinstalowanie pakietu przez APT jest najłatwiejsze).

Możesz spróbować również w usłudze ServerFault, aby uzyskać więcej sugestii od doświadczonych administratorów sysadmin.

P.S.- jeśli masz dostęp do superużytkownika systemu, możesz zresetować hasło roota MySQL, nawet jeśli nie możesz zalogować się do MySQL, aczkolwiek poprzez somewhat convoluted procedure.

+1

Dziękuję za odpowiedź.Po przetestowaniu wielu różnych rozwiązań po prostu zrobiłem najłatwiejszą rzecz, którą powinienem był wypróbować na początku, a mianowicie: apt-get remove mysql-server; apt-get install mysql-server; mysql_secure_installation – dVw

+0

Mam ten sam problem już teraz! Mój serwer MySQL wyświetla ten sam komunikat, będę uruchomiony, nie mogę go zatrzymać, a także ponowne uruchomienie nie działa !! MySQL nie wykrywa jednego z moich stołów! jakieś rozwiązania? Nie mam żadnej kopii zapasowej. – sinoohe

+0

Czy próbowałeś używać myisamchk zgodnie z zaleceniami? Jeśli to nie zadziała, a nie masz kopii zapasowych, prawdopodobnie jesteś SOL. Niech to będzie lekcja na temat znaczenia przechowywania kopii zapasowych, szczególnie w systemach produkcyjnych. –

9

Właśnie ten sam błąd po I przywrócone bazy danych MySQL tak:

mysql -h localhost -u root -p < mysql.backup.sql 

mysql. Plik backup.sql pochodzi z innego serwera.

Problem wydaje się pochodzić z innego hasła przechowywanego w /etc/mysql/debian.cnf w systemie docelowym i źródłowym. Skopiowałem/wkleiłem wiersz hasła z pliku debian.cnf systemu źródłowego do pliku w systemie docelowym. Wtedy mogłem bez problemu ponownie uruchomić mysqld.

Uwaga: Musiałem wykonać killall mysqld, zanim mogłem wykonać restart.

+3

Właśnie znalazłem hasło wymienione w /etc/mysql/debian.cnf zgodnie z sugestią. Nazwijmy to "seekrit". Następnie resetuję hasło w MySQL: "nadaj wszystkie uprawnienia *. * Do" debian-sys-maint "@" localhost "zidentyfikowane przez" seekrit ", przywileje do koloru;" Działa jak marzenie! – oalders

+0

Dzięki, zadziałało dla mnie po kopii db. Wygląda na to, że ten użytkownik/hasło jest używane przez skrypty startowe /etc/init.d/mysql To wydaje się być specyficzne dla debiana, nigdy nie zauważyłem tego na innych linuxach. –

Powiązane problemy