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.
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.
Odpowiedzi:
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
mysqladmin -u root -p shutdown
, z nowym hasłem.
mysql -u root
. Pokazuje błądAccess denied
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”.
mysql_secure_installation
a root przestał współpracować. Co robi authentication_string
ustawienie?
mysqladmin -u root -p shutdown
z nowym hasłemsudo service mysql start
MySQL 5.7 i nowsze wersje zapisują root w pliku dziennika MySQL.
Spróbuj tego:
sudo grep 'temporary password' /var/log/mysqld.log
/var/log/mysql/error.log
zawierało ostrzeżenie o pustym haśle roota - więc ten rodzaj uratował mi dzień :)
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
Nie możesz tego znaleźć. Jest przechowywany w bazie danych, do której potrzebujesz hasła roota, aby uzyskać dostęp, a nawet jeśli w jakiś sposób uzyskałeś dostęp, jest zaszyfrowany za pomocą jednokierunkowego skrótu. Możesz go zresetować: http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html
Wykonaj poniższe czynności, aby zresetować hasło w systemie Windows
Zatrzymaj usługę MySQL z menedżera zadań
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';
Zapisz jako mysql-init.txt
i umieść w 'C' drive
.
Otwórz wiersz polecenia i wklej następujące
C:\> mysqld --init-file=C:\\mysql-init.txt
mysqld --init-file=/root/m.txt
. Dodałem powyższe polecenie SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yournewpassword');
do /root/m.txt
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
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ą)
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
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>
Domyślne hasło, które działało u mnie po natychmiastowej instalacji serwera mysql to: mysql
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)
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.
Udzielone tutaj odpowiedzi wydawały się nie działać, ale sztuczka okazała się następująca: ALTER USER 'root' @ 'localhost' ZIDENTYFIKOWANY PRZEZ mysql_native_password BY 'test';
(pełna odpowiedź tutaj: https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/ )
System:
Procedura:
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 mysql
polecenia.
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 &
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;
W sesji root zabij instancję mysqld bez hasła i przywróć normalny odbiornik mysqld do usługi:
# kill %1
# systemctl start mysqld
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>
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
Idź do phpMyAdmin> config.inc.php> $ cfg ['Servers'] [$ i] ['password'] = '';
phpmyadmin
.