Zresetuj hasło root MySQL za pomocą instrukcji ALTER USER po instalacji na Macu


184

Jestem nowy w całym Macu. Niedawno zainstalowałem MySQL i wydaje się, że muszę zresetować hasło po instalacji. Nie pozwoli mi to zrobić nic więcej.

Teraz zresetowałem hasło w zwykły sposób:

update user set password = password('XXX') where user = root;

(BTW: zajęło mi wieki, aby zorientować się, że MySQL z jakiegoś dziwnego powodu zmienił nazwę pola na „hasło” na „uwierzytelnianie_string”. Jestem bardzo zdenerwowany takimi zmianami.)

Niestety wydaje się, że muszę zmienić hasło w inny nieznany mi sposób. Może ktoś tutaj już zetknął się z tym problemem?

Odpowiedzi:


508

Jeśli NIE jest to Twoja pierwsza konfiguracja hasła, wypróbuj następującą metodę:

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

Jeśli pojawi się następujący błąd, istnieje duża szansa, że ​​nigdy wcześniej nie ustawiłeś hasła:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. 

Aby ustawić hasło po raz pierwszy :

mysql> SET PASSWORD = PASSWORD('your_new_password');
Query OK, 0 rows affected, 1 warning (0.01 sec)

Odniesienie: https://dev.mysql.com/doc/refman/5.6/en/alter-user.html


10
Dzięki! Bardzo mylący komunikat o błędzie z MySQL!
Ed.

1
To zadziałało dla mnie z mysql-5.7.13-osx10.11-x86_64
GiriB

1
Po „mysql> SET PASSWORD = HASŁO („ twoje_nowe_hasło ”);” pojawia się następujący błąd: „BŁĄD 29 (HY000): Plik” ./mysql/user.MYD ”nie znaleziono (Błąd: 2 - Nie ma takiego plik lub katalog) ”. Czy ktoś może mi pomóc?
Ray Kim

4
Zauważysz, że wbrew temu, co sugeruje MySQL, nie używasz instrukcji „ALTER USER”, a jedynie „SET PASSWORD” ...
Fabien Haddadi

1
Pierwszy przykład potencjalnie próbuje ustawić hasło dla innego użytkownika niż ten, którego używasz podczas przesyłania tego wiersza. Drugi próbuje ustawić hasło dla użytkownika, którego logowałeś do mysql. W ten sposób później działa.
Hafenkranich

130

Jeśli zacząłeś używać mysql mysql -u root -p

Próbować ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Źródło: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html


1
Dziękuję Ci! To zadziałało dla mnie! Używam mysql-5.7.11-osx10.10-x86_64.
LeArNr

To zadziałało; Dzięki! Głęboko zasmuca mnie to, że chociaż MySQL jest tak szeroko stosowanym programem, nie ma jednej dokumentacji do zainstalowania i szybkiego uruchomienia.
Shatu,

Dzięki ! Pomogło mi to
Sparw

3
Po wielkiej frustracji wariant tego pracował nad miętą 18 mysql 5.7.18:ALTER USER 'root'@'localhost' indentified WITH mysql_native_password BY 'password';
Steve

Milion dziękuję. To jedyna rzecz, która zadziałała dla mnie.
RandyMy

33

Mam ten sam problem na komputerze Mac

Najpierw zaloguj się mysql w trybie piaskownicy

mysql -u <user> -p --connect-expired-password

Następnie ustaw hasło

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

Query OK, 0 rows affected, 1 warning (0.01 sec)

To działa dla mnie ~

przez: /dba/118852/your-paswssword-has-expired-after-restart-mysql-when-updated-mysql-5-7-8-rcde


1
Wydaje się to dość skomplikowane, biorąc pod uwagę, że musisz to zrobić, zanim w ogóle skorzystasz z bazy danych.
seba.wagner,

w ostrzeżeniu chce, żebyś użyłSET PASSWORD FOR 'root'@'localhost' = 'XXXX';
Arsen Zahray

22

Jeśli używasz MySQL 5.7.6 i nowszych:

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

Jeśli używasz MySQL 5.7.5 i wcześniejszych:

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

Dokumentacja MySQL


1
Używam MySQL 5.7.9 i ta dziwna rzecz SET PASSWORD = PASSWORD('my_pass')działa na mnie. Istnieją komentarze osób, które w nowszych wersjach wspominają, że to oświadczenie również dla nich zadziałało. Mimo to głosowałem za odpowiedzią, ponieważ znalazłeś to szczególne odniesienie w dokumentach MySQL, o którym nikt wcześniej nie wspominał.
Armfoot

MySQL 8 SET PASSWORD rzucił i wystąpił błąd. ALTER USER działał.
Timar Ivo Batis

13

W MySQL 5.7.x musisz zmienić hasło na natywne, aby móc je zmienić, na przykład:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';

11

Uruchom te:

$ cd /usr/local/mysql/bin
$ ./mysqladmin -u root password 'password'

Następnie uruchomić

./mysql -u root

Powinien się zalogować. Teraz uruchom uprawnienia FLUSH;

Następnie zamknij konsolę MySQL i spróbuj się zalogować. Jeśli to nie zadziała, uruchom te:

$ mysql -u root
mysql> USE mysql;
mysql> UPDATE user SET authentication_string=PASSWORD("XXXXXXX") WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

Zmień xxxxxx na nowe hasło. Następnie spróbuj zalogować się ponownie.

Aktualizacja. Zobacz http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

To powinno rozwiązać twój problem.

Jeśli jesteś na oracle, spróbuj tego

ALTER USER username IDENTIFIED BY password

Nie, przepraszam, to też nie działa. Przynajmniej już nie. Nazwa kolumny „hasło” została zmieniona przez Oracle, btw. Teraz jest to nazywane ciągiem uwierzytelniania. Ale nie mogę wykonać tego polecenia, ponieważ najpierw muszę zmienić hasło za pomocą polecenia ALTER USER. Jest to niesamowicie frustrujące, ponieważ tradycyjnie nie aktualizujesz hasła. ALTER powinien być zarezerwowany dla tabel, funkcji i innych rzeczy, nie zmieniając wpisów w tabeli. To jest instrukcja aktualizacji. (przepraszam, że
orzekam

@Shivan Paw: Spodziewam się dwóch ostrzeżeń: mysqladmin: [Ostrzeżenie] Używanie hasła w interfejsie wiersza poleceń może być niepewne. Ostrzeżenie: ponieważ hasło zostanie wysłane do serwera zwykłym tekstem, użyj połączenia ssl, aby zapewnić bezpieczeństwo hasła. - Uważam, że hasło zostało zaktualizowane. I rzeczywiście mogę zalogować się przy użyciu nowego hasła. Jednak nadal nie mogę uruchamiać żadnych zapytań, ponieważ muszę zaktualizować hasło za pomocą polecenia ALTER USER :(.
dengar81

@Shivan Paw: Spróbuj czego? Próbowałem już użyć zasugerowanych poleceń. Resetowanie hasła za pomocą komendy ./mysqladmin (dwa ostrzeżenia), a następnie kontynuowanie aktualizacji na mysql.user ... Drugie polecenie kończy się niepowodzeniem z komunikatem „Musisz zresetować hasło za pomocą ALTER USER [...]”
dengar81

To jedyne rozwiązanie, które działało dla mnie. jeśli masz wygasłe hasło w najnowszej wersji mysql, nie pozwoli ci to na ALTER_USER lub SET_PASSWORD.
Aaron Henderson

7

Może spróbujesz tego?

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

lub

SET PASSWORD FOR 'root'@'%' = PASSWORD('XXX');

W zależności od używanego dostępu.

(i nie jestem pewien, czy powinieneś zmienić nazwy pól ...)

https://dev.mysql.com/doc/refman/5.0/en/set-password.html


Nie przepraszam, to nie działa: BŁĄD 1820 (HY000): Przed wykonaniem tej instrukcji musisz zresetować hasło za pomocą instrukcji ALTER USER.
dengar81

7

ALTER USER „root” @ „localhost” ZIDENTYFIKOWANY PRZEZ „nowe_hasło”;

Użyj tej linii ...


7

AKTUALIZACJA użytkownika USTAW uwierzytelnianie ciąg = HASŁO („MyPassWord”) GDZIE Użytkownik = „root”; BŁĄD 1064 (42000): Wystąpił błąd w składni SQL; sprawdź instrukcję, która odpowiada twojej wersji serwera MySQL pod kątem właściwej składni do użycia w pobliżu „(„ MyPassWord ”) GDZIE Użytkownik =„ root ”w wierszu 1

Rozwiązany z

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

Odnośnik z poniższej strony

https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html


5

W dniu Ver 14.14 Distrib 5.7.19, for macos10.12 (x86_64)zalogowałem się jako: mysql -uroot -pnastępnie podczas instalacji wpisałem wygenerowane hasło przez MySQL. Następnie..

ALTER USER 'root'@'localhost' IDENTIFIED BY '<new_password>';

Przykład:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Ab1234'; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye $ mysql -uroot -p

I możesz wpisać „Ab1234”


3

MySQL 5.7.24 zaloguj się jako root

krok 1: uzyskaj hasło z dziennika

 grep root@localhost /var/log/mysqld.log
    Output
        2019-01-17T09:58:34.459520Z 1 [Note] A temporary password is generated for root@localhost: wHkJHUxeR4)w

krok 2: zaloguj się z nim do mysql

mysql -uroot -p'wHkJHUxeR4)w'

krok 3: podajesz nowe hasło roota

SET PASSWORD = PASSWORD('xxxxx');

dostajesz ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

jak to naprawić?

Uruchom to SET GLOBAL validate_password_policy=LOW;

Spróbuj ponownie SET PASSWORD = PASSWORD('xxxxx');



2

Oto jak dla mnie działa.

mysql> show databases ;

BŁĄD 1820 (HY000): Przed wykonaniem tej instrukcji musisz zresetować hasło za pomocą instrukcji ALTER USER.

mysql> uninstall plugin validate_password;

BŁĄD 1820 (HY000): Przed wykonaniem tej instrukcji musisz zresetować hasło za pomocą instrukcji ALTER USER.

mysql> alter user 'root'@'localhost' identified by 'root';

Zapytanie OK, dotyczy 0 wierszy (0,01 s)

mysql> flush privileges;

Zapytanie OK, dotyczy 0 wierszy (0,03 s)


1

Podczas używania SET PASSWORD = PASSWORD('your_new_password');może ulec awarii

(BŁĄD 1819 (HY000): Twoje hasło nie spełnia aktualnych wymagań zasad)

. możesz użyć SET GLOBAL validate_password_policy=LOW;do spowolnienia.


1

w wersji 5.7. pole „hasło” zostało usunięte. ciąg „authentication_string” go zastąp

use mysql;
update user set authentication_string=password('123456') where user='root';
flush privileges;

0

Mam również ten sam problem w systemie Mac OS X 10.10.4 (Yosemite). USTAW HASŁO działa dla mnie. Zmień hasło dla mysql-mysql> SET PASSWORD = PASSWORD ('twoje_hasło'); Zapytanie OK, dotyczy 0 wierszy, 1 ostrzeżenie (0,01 s)

ustaw zmienną ścieżki środowiska Mysql w .bash_profile i dodaj poniżej wiersza
eksportu PATH = $ PATH: / usr / local / mysql / bin, a następnie uruchom następującą komendę: source .bash_profile


0

Wystąpił problem po zainstalowaniu środowiska roboczego mysql i serwera społeczności mysql. Wygenerowano hasło podczas instalacji serwera. Dwukrotne kliknięcie istniejącej instancji lokalnej w środowisku roboczym uruchomiło okno dialogowe, w którym mogłem ustawić nowe hasło.


0

mysql> SET PASSWORD = PASSWORD('your_new_password'); To działa dla mnie.


0

zapamiętaj wersje 5.7.23 i nowsze - tabela użytkowników nie ma hasła do kolumny zamiast ciągu uwierzytelniającego, więc poniżej działa podczas resetowania hasła dla użytkownika.

update user set authentication_string=password('root') where user='root';
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.