Jak znaleźć hasło root MySQL


167

Nie mogę znaleźć mojego hasła roota MySQL; jak mogę się tego dowiedzieć? Czy jest jakiś plik, w którym jest przechowywane to hasło?

Śledzę ten link, ale nie mam katalogu DirectAdmin w lokalnym.


Znalezione przez prostą wyszukiwarkę Google: dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html
Arran,

11
Domyślne hasło root jest - uwaga - „root” (bez cudzysłowów), albo w ogóle brak hasła (i jest to, że serwer MySQL naprawdę twoje)
Nikola Bogdanović

tak, to mój lokalny serwer mysql na moim laptopie
Om3ga

Czy więc ktoś po prostu przeszedł przez to pytanie i odrzucił głos przeciw każdej poprawnej i trafnej odpowiedzi?
lanzz

Odpowiedzi:


142

dzięki @thusharaK mogłem zresetować hasło roota bez znajomości starego hasła.

Na Ubuntu wykonałem następujące czynności:

sudo service mysql stop
sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-networking

Następnie uruchom mysql w nowym terminalu:

mysql -u root

I uruchom następujące zapytania, aby zmienić hasło:

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

W MySQL 5.7 pole hasła w tabeli mysql.user zostało usunięte, teraz nazwa pola to „authentication_string”.

Zamknij tryb bezpieczny mysql i uruchom usługę mysql przez:

mysqladmin shutdown
sudo service mysql start

24
Musiałem użyć mysqladmin -u root -p shutdown, z nowym hasłem.
SL Barth - Przywróć Monikę

2
Szczególnie przyjemny przepływ instrukcji: następnie uruchom mysql w nowym terminalu
Mohammed Subhi Sheikh Quroush

8
nie mogę tego zrobić mysql -u root. Pokazuje błądAccess denied
Avinash Raj

4
@AvinashRaj: Spróbuj tego: sudo mysql -u root
Allen Gingrich

Niesamowite. Rozumiem, co działało w RHEL 7: Terminal 1: usługa sudo mysql stop sudo mysqld_safe --skip-grant-table --skip-syslog --skip-networking Terminal 2: mysql -u root AKTUALIZACJA mysql.user SET Hasło = HASŁO ('nowe hasło') WHERE User = 'root'; PRZYWILEJE PŁUKANIA; mysqladmin -u root -p shutdown Uwaga: Gdy zamkniesz mysqladmin, zobaczysz wyjście z trybu bezpiecznego w Terminalu 1. sudo service mysql start To wszystko i działa jak urok z nowym hasłem!
Użytkownik StackOverFlow

65

Nie możesz wyświetlić zaszyfrowanego hasła; jedyne, co możesz zrobić, to zresetować!

Zatrzymaj MySQL:

sudo service mysql stop

lub

$ sudo /usr/local/mysql/support-files/mysql.server stop

Uruchom w trybie awaryjnym:

$ sudo mysqld_safe --skip-grant-tables

(powyższa linia to cała komenda)

Będzie to ciągłe polecenie, dopóki proces nie zostanie zakończony, więc otwórz kolejne okno powłoki / terminala, zaloguj się bez hasła:

$ mysql -u root

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

MySQL 5.7 i nowsze:

mysql> use mysql; 
mysql> update user set authentication_string=password('password') where user='root'; 

Uruchom MySQL:

sudo mysql start

lub

sudo /usr/local/mysql/support-files/mysql.server start

Twoje nowe hasło to „hasło”.


sudo /usr/local/mysql/support-files/mysql.server stop sudo: /usr/local/mysql/support-files/mysql.server: polecenie nie zostało znalezione
Isuru

Co robić w takim przypadku?
Isuru

Wygląda na to, że mysql nie jest poprawnie zainstalowany. Odinstaluj go poprawnie i zainstaluj ponownie.
tk_

Dziękuję bardzo. Coś poszło nie tak z moim, mysql_secure_installationa root przestał współpracować. Co robi authentication_stringustawienie?
będzie

3
Aby zrestartować, spróbuj mysqladmin -u root -p shutdownz nowym hasłemsudo service mysql start
forumulator

37

MySQL 5.7 i nowsze wersje zapisują root w pliku dziennika MySQL.

Spróbuj tego:

sudo grep 'temporary password' /var/log/mysqld.log

W moim przypadku nie było tu hasła; jednak zamiast tego /var/log/mysql/error.logzawierało ostrzeżenie o pustym haśle roota - więc ten rodzaj uratował mi dzień :)
Janaka Bandara

19

jedna rzecz, która mnie zaskoczyła przy nowej instalacji mySQL i zastanawiam się, dlaczego nie mogłem uruchomić domyślnego hasła i dlaczego nawet metody resetowania nie działają. dobrze się okazuje, że w Ubuntu 18 najnowsza wersja serwera mysql domyślnie w ogóle nie używa uwierzytelniania hasłem dla użytkownika root. Oznacza to, że nie ma znaczenia, na co go ustawisz, nie pozwoli ci go użyć. oczekuje, że zalogujesz się z uprzywilejowanego gniazda. więc

mysql -u root -p

nie będzie działać w ogóle, nawet jeśli używasz poprawnego hasła !!! odmówi dostępu bez względu na to, co wprowadzisz.

Zamiast tego musisz użyć

sudo mysql

to zadziała bez hasła. wtedy, gdy już jesteś, musisz wpisać

 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password you want to use';

wyloguj się i teraz ta cholerna rzecz w końcu zaakceptuje twoje hasło



14

Wykonaj poniższe czynności, aby zresetować hasło w systemie Windows

  1. Zatrzymaj usługę MySQL z menedżera zadań

  2. Utwórz plik tekstowy i wklej poniższe oświadczenie

MySQL 5.7.5 i starsze:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yournewpassword');


MySQL 5.7.6 i nowsze:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'yournewpassword';

  1. Zapisz jako mysql-init.txti umieść w 'C' drive.

  2. Otwórz wiersz polecenia i wklej następujące

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


2
To był ratunek dla życia, WIELKA wskazówka!
Nicholas Kreidberg

pracował w Centos7 mysqld --init-file=/root/m.txt. Dodałem powyższe polecenie SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yournewpassword');do /root/m.txt
Damodar Bashyal

8

O ile menedżer pakietów nie zażąda wpisania hasła roota podczas instalacji, domyślnym hasłem root jest pusty ciąg. Aby połączyć się ze świeżo zainstalowanym serwerem, wpisz:

shell> mysql -u root --password=
mysql>

Aby zmienić hasło, odzyskaj powłokę unixa i wpisz:

shell> mysqladmin -u root --password= password root

Nowe hasło to „root”. Teraz połącz się z serwerem:

shell> mysql -u root --password=
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Ups, hasło się zmieniło. Użyj nowego root:

shell> mysql -u root --password=root
...
blah, blah, blah : mysql welcome banner
...
mysql> 

Bingo! Nowy zrób coś ciekawego

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

Maurycy


1
domyślnie nie używa haseł, ale uwierzytelnionych gniazd. więc sama zmiana hasła nie jest już wystarczająco dobra.
Kit Ramos

7

Oprócz innych odpowiedzi, w instalacji cpanel, hasło root mysql jest przechowywane w pliku o nazwie /root/.my.cnf. (a usługa cpanel resetuje ją z powrotem po zmianie, więc inne odpowiedzi tutaj nie pomogą)


6

możesz wyświetlić hasło root mysql, cóż, wypróbowałem je na mysql 5.5, więc nie wiem, czy inne nowe wersje działają dobrze, czy nie

nano ~/.my.cnf

4

To zadziałało dla mnie:

Na terminalu wpisz następujące

$ sudo mysql -u root -p

Wpisz hasło: // po prostu naciśnij enter

mysql>


wygląda na to, że serwer mysql nie używa już domyślnie uwierzytelniania hasłem. musisz uruchomić klienta mysql jako superużytkownik (sudo), aby uzyskać dostęp do czasu zmiany metody logowania.
Kit Ramos

4

Domyślne hasło, które działało u mnie po natychmiastowej instalacji serwera mysql to: mysql


2
może nie odpowiedział na pytanie, ale wielu przyjeżdżających tutaj ludzi może uznać, że rozwiązuje to ich problem.
Ohad Cohen,

3

Procedura zmienia się w zależności od wersji MySql. Postępuj zgodnie z procedurą dokładnie opisaną dla Twojej wersji:

  • WSKAZÓWKI - Przeczytaj przed stroną z instrukcjami dla Twojej wersji MySql *

  • W kroku 5: Zamiast uruchamiać CMD, utwórz na pulpicie skrót wywołujący CDM.exe. Następnie kliknij prawym przyciskiem myszy skrót i wybierz „Wykonaj jako administrator”.

  • W kroku 6: Pomiń pierwszą proponowaną wersję polecenia i wykonaj drugą, tę z parametrem --defaults-file

  • Po wykonaniu polecenia, jeśli wszystko jest w porządku, okno CMD pozostaje otwarte, a polecenie z kroku 6 kontynuuje wykonywanie. Po prostu zamknij okno (kliknij „x”), a następnie wymuś zamknięcie MySQl z Menedżera zadań.

  • Usuń plik za pomocą poleceń SQL i uruchom ponownie MySQL. Hasło należy teraz zmienić.

5.0 http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html

5.1 http://dev.mysql.com/doc/refman/5.1/en/resetting-permissions.html

... po prostu zmień wersję w linku (5.5, 5.6, 5.7)


3

W pliku „nazwa hosta” .err w folderze danych, na którym działa MySQL, spróbuj poszukać ciągu zaczynającego się od:

„Generowane jest hasło tymczasowe dla roor @ localhost”

możesz użyć

less /mysql/data/dir/hostname.err 

następnie ukośnik polecenie, a następnie ciąg, którego chcesz szukać

/"A temporary password"

Następnie naciśnij n, aby przejść do następnego wyniku.



0

System:

  • CentOS Linux 7
  • mysql Ver 14.14 Distrib 5.7.25

Procedura:

  1. Otwórz dwie sesje powłoki, logując się do jednej jako użytkownik root systemu Linux, a do drugiej jako użytkownik inny niż root z dostępem do mysqlpolecenia.

  2. W sesji root zatrzymaj normalny odbiornik mysqld i uruchom odbiornik, który omija uwierzytelnianie hasła ( uwaga: jest to poważne zagrożenie bezpieczeństwa, ponieważ każdy, kto ma dostęp do mysql polecenia, może uzyskać dostęp do twoich baz danych bez hasła. Możesz chcieć zamknąć aktywne sesje powłoki i / lub wyłącz dostęp do powłoki, zanim to zrobisz):

    # systemctl stop mysqld
    # /usr/sbin/mysqld --skip-grant-tables -u mysql &

  3. W sesji nonroot zaloguj się do mysql i ustaw hasło root mysql:

    $ mysql
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
    Query OK, 0 rows affected, 1 warning (0.01 sec)

    mysql> quit;

  4. W sesji root zabij instancję mysqld bez hasła i przywróć normalny odbiornik mysqld do usługi:

    # kill %1
    # systemctl start mysqld

  5. W sesji użytkownika innego niż root przetestuj nowe hasło roota skonfigurowane powyżej:

    $ mysql -u root -p
    Enter password:
    Welcome to the MySQL monitor. Commands end with ; or \g.
    ...
    mysql>


-2

Rozwiązałem to inaczej, dla niektórych może to być łatwiejsze.

Zrobiłem to w ten sposób, ponieważ próbowałem uruchomić w trybie awaryjnym, ale nie mogę połączyć się z błędem: ERROR 2002 (HY000): Nie można połączyć się z lokalnym serwerem MySQL przez gniazdo '/var/run/mysqld/mysqld.sock' (2)

To, co zrobiłem, to połączyć się normalnie jako root:

$ sudo mysql -u root

Następnie utworzyłem nowego superużytkownika:

mysql> grant all privileges on *.* to 'myuser'@'%' identified by 'mypassword' with grant option;
mysql> quit

Następnie zaloguj się jako myuser

$ mysql -u myuser -p -h localhost

Próba zmiany hasła nie dała mi żadnych błędów, ale nic nie zrobiła, więc porzuciłem i ponownie utworzyłem użytkownika root

mysql> drop user 'root'@'localhost;
mysql> mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'mypassword' with grant option;

Użytkownik root pracuje teraz z nowym hasłem


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.