2012-01-09 16 views
18

Zainstalowałem serwer MySQL 5 na serwerze redhat. Nie mogę się zalogować jako root, więc nie mogę zmienić hasła root.Jak zmienić hasło root mysql

mysql -u root -p 
Enter password: <blank> 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' 
(using password: NO) 

Kiedy próbuję ustawić jedną takiego:

mysqladmin -u root password 'newpass' 

pojawia się błąd:

mysqladmin: connect to server at 'localhost' failed 
error: 'Access denied for user 'root'@'localhost' 
(using password: NO)' 

Jakby to zestaw hasło administratora.

Próbowałem również resetowania hasła przy użyciu (opisany here)

/sbin/service mysqld start --skip-grant-tables 

a następnie wykonywanie:

mysql> UPDATE mysql.user SET Password=PASSWORD('newpass')  
-> WHERE User='root'; 
ERROR 1142 (42000): UPDATE command denied to user ''@'localhost' for table 'user' 

nawet odinstalować mysql-server (przy użyciu yum), a następnie ponownie zainstalować go jednak, że nie pomogło.

Jak wymusić resetowanie hasła roota?

+0

Sprawdź, czy twój mysqld jest zainstalowany, włączony i włączony komendą: 'sudo service mysqld status'. –

Odpowiedz

4

Usunąłem instalację MySQL i usunąłem pliki danych, a następnie ponownie je zainstalowałem.

Następnie udało mi się ustawić hasło roota. Po ustawieniu hasła root do czegoś. mysqladmin nie pozwoli ci go zresetować, jeśli go nie znasz.

Aby wyzerować go, masz mieć prawo własności, jak mysqld jest wykonywany i paszy plik startowy, aby zmienić hasło root: https://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html

+1

możesz poprawić link proszę – ihebiheb

6

Hasło użytkownika root jest domyślnie pustym łańcuchem znaków.

I (using password: NO) mówi, że nie ma hasła.

Czy próbujesz zalogować się z innego systemu? Wyobrażam sobie, że możesz zalogować się jako lokalny użytkownik root.

+0

czy chcę być rootem systemu, aby być rootem na serwerze mysql? – yossi

+0

Nie jestem pewien, ale nie sądzę. Niestety nigdy nie używałem redhat ... EDIT: Ale czemu nie spróbujesz tego? – danijar

+0

Pamiętaj, że jeśli chcesz spróbować zalogować się bez hasła, powinieneś unikać podawania '-p' w linii komend. –

6

Jedną opcją jest zapisanie UPDATE mysql.user SET Password=PASSWORD('newpass') WHERE User='root'; w pliku, a następnie ręczne uruchomienie mysqld przy pomocy --init-file=FILENAME. Po uruchomieniu serwera należy zresetować hasło, a następnie powinno być możliwe zalogowanie. Następnie należy wyłączyć serwer i uruchomić go normalnie.

+1

Dobry panie, dlaczego ktoś daje -1 do jedynego rozwiązania, które znalazłem działa. Plik init sql był jedynym sposobem, w jaki mogłem nadpisać hasło użytkownika root mysql i móc z niego korzystać. To wstyd, że musisz powrócić do takich operacji na świeżo zainstalowanym oprogramowaniu, ale dobrze jest mieć ** niezawodny ** obejście. –

+2

'sudo mysql service stop && echo" UPDATE mysql.user SET Password = PASSWORD ('newpass') WHERE User = 'root'; " > /tmp/reset.sql && sudo /etc/init.d/mysql start --init-file =/tmp/reset.sql' –

3

Zdjąć -p z poleceniem. -p wymusza monit o podanie hasła.

Zastosowanie: mysql -u root

Ten problem można rozwiązać.

+2

Działa to tylko wtedy, gdy nie ma hasła root. Jeśli ustawione zostało hasło roota, należy je podać. –

2

Pomogło mi to w systemie Windows z serwerem MySQL 5.6. Upewnij się zmienić ścieżkę mysqld aby wskazać gdzie masz zainstalowanego serwera MySQL, dla mnie to było "C:\Program Files\mysql\MySQL Server 5.6\bin\mysqld.exe":

  1. zalogować się do systemu jako administrator.

  2. Zatrzymaj serwer MySQL, jeśli jest uruchomiony.W przypadku serwera, który jest działający jako usługa systemu Windows, przejdź do Menedżera usług: Z menu Start wybierz polecenie Panel sterowania, następnie Narzędzia administracyjne, a następnie Usługi. Znajdź usługę MySQL na liście i zatrzymaj ją.

    Jeśli serwer nie działa jako usługa, może być konieczne użycie Menedżera zadań w celu wymuszenia zatrzymania.

  3. Utwórz plik tekstowy zawierający następujące instrukcje. Zastąp hasło hasłem, którego chcesz użyć.

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

    Zapisz instrukcje UPDATE i FLUSH w każdym wierszu. Instrukcja UPDATE resetuje hasło dla wszystkich kont root, a instrukcja FLUSH mówi serwerowi, aby ponownie załadował tabele przyznania do pamięci, aby zauważył zmianę hasła.

  4. Zapisz plik. W tym przykładzie plik zostanie nazwany C:\mysql-init.txt.

  5. Otwórz okno konsoli, aby przejść do wiersza polecenia: Z menu Start wybierz polecenie Uruchom, a następnie wprowadź polecenie cmd jako polecenie do uruchomienia.

  6. Uruchom serwer MySQL z opcją specjalnego --init-pliku (zauważ, że backslash wartości opcji jest podwojona):

    C:\> C:\mysql\bin\mysqld --init-file=C:\\mysql-init.txt 
    

    Jeśli zainstalowano MySQL do lokalizacji innej niż C: \ mysql, odpowiednio dostosuj polecenie.

    Serwer uruchamia zawartość pliku określonego w opcji --init-file przy uruchomieniu, zmieniając hasło każdego konta root.

    Możesz również dodać opcję --console do polecenia, jeśli chcesz, aby dane wyjściowe serwera pojawiały się w oknie konsoli, a nie w pliku dziennika.

    Jeśli zainstalowano MySQL przy użyciu kreatora instalacji MySQL, może być konieczne, aby określić opcję --defaults-file:

    C:\> "C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld.exe" 
        --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.5\\my.ini" 
        --init-file=C:\\mysql-init.txt 
    

    odpowiednie ustawienie --defaults plik można znaleźć za pomocą Menedżera usług: Z menu Start wybierz Panel sterowania, Narzędzia administracyjne, a następnie Usługi. Znajdź usługę MySQL na liście, kliknij ją prawym przyciskiem myszy i wybierz opcję Właściwości. Pole Ścieżka do pliku wykonywalnego zawiera ustawienie --defaults-file.

  7. Po pomyślnym uruchomieniu serwera, usuń C: \ mysql-init.txt.

http://docs.oracle.com/cd/E17952_01/refman-5.5-en/resetting-permissions.html

2

Spróbuj to zrobić:

mysql -u root 

a następnie:

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

mysql> FLUSH PRIVILEGES; 

pracował dobrze dla mnie!

2

Prawdopodobnie nieco późno tutaj, ale tutaj jest to, co robiłam:

utworzyć plik resetpass.sh który posiada:

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

# mysqld_safe --init-file=resetpass.sh 

# service mysqld start --skip-grant-tables 

# mysql -u root -p 

Enter przejść

mysql > change root pass ; flush privs; 

rzucić

# restart mysql service 

The MySQL v Wersja, której używałem, wynosiła 5,173 pod centos6.

0

Zgodnie z dokumentami, w MySQL 5.7 hasło tymczasowe zostaje umieszczone w /var/log/mysqld, ale nie jest to oczywiście przypadek w 5.6.

Z MySQL w wersji 5.6 zainstalowanej na RHEL 6.7, w końcu znalazłem tymczasowe hasło root ustawione podczas instalacji zostało umieszczone w pliku /root/.mysql_secret.

Powiązane problemy