Szukaj…


Wprowadzenie

Po MySQL 5.7, kiedy instalujemy MySQL, czasami nie musimy tworzyć konta roota ani podawać hasła roota. Domyślnie, kiedy uruchamiamy serwer, domyślne hasło jest przechowywane w pliku mysqld.log . Musimy zalogować się do systemu za pomocą tego hasła i musimy je zmienić.

Uwagi

Odzyskiwanie i resetowanie domyślnego hasła roota przy użyciu tej metody dotyczy tylko MySQL 5.7+

Co dzieje się przy pierwszym uruchomieniu serwera

Biorąc pod uwagę, że katalog danych serwera jest pusty:

  • Serwer został zainicjowany.
  • Pliki SSL i certyfikaty są generowane w katalogu danych.
  • Wtyczka validate_password jest zainstalowana i włączona.
  • Utworzono konto administratora „root” @ „localhost”. Hasło administratora jest ustawione i przechowywane w pliku dziennika błędów.

Jak zmienić hasło roota przy użyciu hasła domyślnego

Aby ujawnić domyślne hasło „root”:

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

Zmień hasło roota jak najszybciej, logując się przy użyciu wygenerowanego hasła tymczasowego i ustaw niestandardowe hasło dla konta administratora:

shell> mysql -uroot -p 

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!'; 

Uwaga: wtyczka validate_password MySQL jest instalowana domyślnie. Będzie to wymagało, aby hasła zawierały co najmniej jedną wielką literę, jedną małą literę, jedną cyfrę i jeden znak specjalny oraz że całkowita długość hasła wynosi co najmniej 8 znaków.

zresetuj hasło roota, gdy „/ var / run / mysqld” dla pliku gniazda UNIX nie istnieje ”

jeśli zapomnę hasła, dostanę błąd.

$ mysql -u root -p    

Wprowadź hasło:

BŁĄD 1045 (28000): Odmowa dostępu dla użytkownika „root” @ „localhost” (przy użyciu hasła: TAK)

Próbowałem rozwiązać problem, znając najpierw status:

$ systemctl status mysql.service

mysql.service - Serwer społeczności MySQL Załadowano: załadowano (/lib/systemd/system/mysql.service; włączone; preset dostawcy: en Aktywny: aktywny (uruchomiony) od czw. 2017-06-08 14:31:33 IST; 38s temu

Potem użyłem kodu mysqld_safe --skip-grant-tables & dostaję błąd:

katalog mysqld_safe '/ var / run / mysqld' dla pliku gniazda UNIX nie istnieje.

$ systemctl stop  mysql.service
$ ps -eaf|grep mysql
$ mysqld_safe --skip-grant-tables &

Rozwiązałem:

$ mkdir -p /var/run/mysqld
$ chown mysql:mysql /var/run/mysqld

Teraz używam tego samego kodu mysqld_safe --skip-grant-tables & i get

mysqld_safe Uruchamianie demona mysqld z bazami danych z / var / lib / mysql

Jeśli $ mysql -u root , dostanę:

Wersja serwera: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)

Prawa autorskie (c) 2000, 2017, Oracle i / lub podmioty stowarzyszone. Wszelkie prawa zastrzeżone.

Oracle jest zastrzeżonym znakiem towarowym firmy Oracle Corporation i / lub jej spółek zależnych. Inne nazwy mogą być znakami towarowymi ich właścicieli.

Wpisz „help;” lub „\ h” w celu uzyskania pomocy. Wpisz „\ c”, aby wyczyścić bieżącą instrukcję wprowadzania.

mysql>

Teraz czas na zmianę hasła:

mysql> use mysql
mysql> describe user;

Odczytywanie informacji o tabeli w celu uzupełnienia nazw tabel i kolumn Możesz wyłączyć tę funkcję, aby uzyskać szybsze uruchomienie z -A

Baza danych zmieniona

mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('newpwd');

lub Jeśli masz konto root mysql, które może łączyć się z dowolnego miejsca, powinieneś również:

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

Metoda alternatywna:

   USE mysql
   UPDATE user SET Password = PASSWORD('newpwd')
   WHERE Host = 'localhost' AND User = 'root';

A jeśli masz konto root, które może uzyskiwać dostęp z dowolnego miejsca:

 USE mysql
 UPDATE user SET Password = PASSWORD('newpwd')
 WHERE Host = '%' AND User = 'root';`enter code here

teraz musisz quit z mysql i zatrzymać / uruchomić

FLUSH PRIVILEGES;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

teraz ponownie `mysql -u root -p 'i użyj nowego hasła, aby uzyskać

mysql>



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow