Zmiana hasła root MySQL


102

Próbowałem zresetować moje hasło roota MySQL. Uruchomiłem tabele mysqld_safe --skip-grant-table, zaktualizowałem hasło roota i sprawdziłem tabelę użytkowników, aby upewnić się, że tam jest. Po ponownym uruchomieniu demona mysql próbowałem zalogować się przy użyciu nowego hasła roota, które właśnie ustawiłem, i nadal otrzymuję odmowę dostępu z powodu błędów użytkownika „root”. Próbowałem również całkowicie usunąć i ponownie zainstalować mysql (w tym usunąć plik my.cnf) i nadal nie mam szczęścia. Czy ktoś ma jakieś sugestie, co mogę zrobić dalej?

Z góry dziękuję


2
proszę opublikować swój rzeczywisty błąd
Vishwanath Dalvi

17
Jeśli nie jesteś zablokowany, SET PASSWORD FOR 'root'@'localhost' = PASSWORD('somepassword'); jest najbezpieczniejszy.
Sabgenton

Postępowałem zgodnie z instrukcjami w filmie, aby zmienić hasło na jednym z moich serwerów youtu.be/gFo5DV_pSg8
Prem


1
Wersja serwera: 8.0.20-0ubuntu0.20.04.1 (Ubuntu) BŁĄD 1064 (42000): Wystąpił błąd w składni SQL; sprawdź podręcznik, który odpowiada Twojej wersji serwera MySQL, aby znaleźć właściwą składnię w pobliżu 'HASŁO ("1")' w linii 1 USTAW HASŁO FOR 'root' @ 'localhost' = PASSWORD ("jakieś hasło");
discpleartem

Odpowiedzi:


135
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypass');
FLUSH PRIVILEGES;

7
To działa dla mnie w 5.7, podczas gdy zaakceptowana odpowiedź nie.
Stoopkid

3
Jest to poprawne rozwiązanie, jeśli hasło root MySQL jest puste.
fschuindt

4
> AKTUALIZACJA mysql.user SET authentication_string = PASSWORD ('MyNewPass') WHERE user = 'root'; > UPRAWNIENIA PŁUKANIA; W MySQL w wersji 5.7.x nie ma już pola hasła w tabeli mysql. Został zastąpiony ciągiem uwierzytelniania.
Robert Anthony S. Tribiana,

2
To daje mi OK, ale tak naprawdę nic nie rób
Freedo

1
Wymaga dodatkowego polecenia, FLUSH PRIVILEGESaby wprowadzić zmiany bez ponownego uruchamiania serwera bazy danych.
NetVicious

64

spójrz na to w podręczniku MySQL:

Pierwsze logowanie mysql:

# mysql -u root -p

Następnie w zachęcie mysql uruchom:

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

Następnie

FLUSH PRIVILEGES;

Zajrzyj na tę stronę, aby uzyskać więcej informacji: Resetowanie hasła roota: Systemy Unix


Wystąpił błąd „Używasz bezpiecznego trybu aktualizacji i próbujesz zaktualizować tabelę bez pozycji WHERE, która używa kolumny KEY ...” podczas aktualizowania hasła użytkownika. Zobacz stackoverflow.com/questions/11448068/…, aby dowiedzieć się, jak obejść ten błąd.
Joe Borysko

BŁĄD 1064 (42000): Wystąpił błąd w składni SQL; sprawdź podręcznik, który odpowiada twojej wersji serwera MySQL, aby znaleźć właściwą składnię, której należy użyć w pobliżu '(' MyNewPass ') WHERE User =' root '' w wierszu 1
ucznia


27

To jest zaktualizowana odpowiedź dla WAMP v3.0.6 i nowszych

> UPDATE mysql.user 
> SET authentication_string=PASSWORD('MyNewPass') 
> WHERE user='root';

> FLUSH PRIVILEGES;

W MySQL w wersji 5.7.x nie ma już pola hasła w tabeli mysql. Został zastąpiony ciągiem uwierzytelniania. (To jest dla terminala / CLI)

UPDATE mysql.user SET authentication_string=PASSWORD('MyNewPass') WHERE user='root';

FLUSH PRIVILEGES;

(To jeśli dla PHPMyAdmin lub dowolnego GUI MySQL)


Ta odpowiedź jest jedną z nielicznych, którzy twierdzą, że mysql.usertabela powinna zostać zaktualizowana. Zwróć uwagę, że jeśli używasz innej bazy danych (ustawionej przez usepolecenie), pojawi się błąd, że tabela usernie istnieje. Dziękuję Panu!
Aleksandar

1
pracuje dla mnie . Używam 5.7.x, nie ma mysql.usertabeli. inne odpowiedzi są nieaktualne
Siwei Shen 申思维

Chętnie pomoże!!
Robert Anthony S. Tribiana

Wycofuję go, ponieważ zamierzam użyć> ze względu na średnik w wierszu, który jest przeznaczony dla terminala
Robert Anthony S. Tribiana

Wpłynęło to na 0 wierszy, dopasowane wiersze: 3 zmienione: 0 ...?
trainoasis

22

Znalazłem to! Zapomniałem zaszyfrować hasło, kiedy je zmieniłem. Użyłem tego zapytania, aby rozwiązać mój problem:

update user set password=PASSWORD('NEW PASSWORD') where user='root';

Zapomniałem PASSWORD('NEW PASSWORD')i po prostu wstawiłem nowe hasło zwykłym tekstem


wróć i zaakceptuj swoją odpowiedź, aby inni mogli zobaczyć rozwiązanie
ghostJago,

1
dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html pokazuje, jak to zrobić, --init-file=jeśli wyszedłeś.
Sabgenton

3
Masz jakiś pomysł, dlaczego kiedy używam tego samego polecenia, zwracany jest następujący błąd? Błąd 1054 (42S22): nieznana kolumna „Hasło” w „liście pól”
Adrian M.

1
Masz błąd w składni SQL; sprawdź podręcznik, który odpowiada Twojej wersji serwera MySQL, aby znaleźć właściwą składnię, której należy użyć w pobliżu '(' NOWE HASŁO '), gdzie użytkownik =' root '' w linii 1
uczeń

21

Wykonaj poniższe kroki.

krok 1. zatrzymaj mysql

krok 2. sudo mysqld_safe --skip-grant-tables

krok 3.mysql -u root

krok 4.use mysql;

krok5.show tables;

krok 6.describe user;

krok 7.update user set authentication_string=password('1111') where user='root';

zaloguj się hasłem 1111


3
flush privilegesjest ważny jako ostatni krok.
Khom Nazid

Naprawdę zrobiłem z tyłkiem. Zrobiłem wszystkie samouczki, aby zresetować hasło. Wszystko działa, z wyjątkiem tego, że loguję się przy użyciu nowego hasła, nie działa.
Shidomaru NeveRage

jeśli mysqld nie uruchamia się i komunikat taki jak ten demon mysqld z bazami danych z / var / lib / mysql mysqld_safe mysqld z pliku pid /var/run/mysqld/mysqld.pid zakończony, zrób to: mkdir / var / run / mysqld chomod 777 / var / run / mysqld i zacznij wszystko od początku
jokermt235

19

Rozglądałem się też i prawdopodobnie niektóre odpowiedzi pasują do niektórych sytuacji,

moja sytuacja to Mysql 5.7 w systemie Ubuntu 18.04.2 LTS:

(uzyskaj uprawnienia roota)

$ sudo bash

(ustaw hasło dla użytkownika root db + zaimplementuj zabezpieczenia w krokach)

# mysql_secure_installation

(daj dostęp użytkownikowi root za pomocą hasła zamiast gniazda)

(+ edycja: najwyraźniej musisz ponownie ustawić hasło?)

(nie ustawiaj go na „mySecretPassword” !!!)

# mysql -u root

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> set password for 'root'@'localhost' = PASSWORD('mySecretPassword'); 
mysql> FLUSH PRIVILEGES;
mysql> exit;

# service mysql restart

Wielkie dzięki dla zetacu (i ericha ) za tę doskonałą odpowiedź (po kilku godzinach wyszukiwania ...)

Ciesz się :-D

S.

Edycja (2020):

Ta metoda już nie działa, zobacz to pytanie w przyszłości ...


To najlepsza jak dotąd odpowiedź, przynajmniej dla serwera mysql 5.7.
Zoltán Hajdú

NAJLEPSZA odpowiedź. Dziękuję Ci.
Luciano Fantuzzi

11

W MySQL 8.0.4+

Aby zaktualizować aktualnego użytkownika root:

select current_user();
set password = 'new_password';

Aby zaktualizować innego użytkownika:

set password for 'otherUser'@'localhost' = 'new_password';

Aby ustawić politykę haseł przed aktualizacją hasła:

set global validate_password.policy = 0;
set password = 'new_password';
set password for 'otherUser'@'localhost' = 'new_password';

Inny / lepszy sposób aktualizacji hasła roota:

mysql_secure_installation

Chcesz pozostać przy uwierzytelnianiu 5.x, aby nadal korzystać ze starszych aplikacji?

Na my.cnf

default_authentication_plugin = mysql_native_password

Aby zaktualizować root:

set global validate_password.policy = 0;
alter user 'root'@'localhost' identified with mysql_native_password by 'new_password';

7

To zadziałało dla mnie -

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

https://dev.mysql.com/doc/mysql-windows-excerpt/5.7/en/resetting-permissions-windows.html


BŁĄD 1064 (42000): Wystąpił błąd w składni SQL; sprawdź podręcznik, który odpowiada Twojej wersji serwera MySQL, aby uzyskać właściwą składnię, której należy użyć w pobliżu `` IDENTIFIED BY 'MyNewPass' 'w linii 1
trainoasis

Właśnie skopiowałem dokładnie w sql przez CLI: o
trainoasis

Oczywiście, wysłałem do mojego serwera + mysql -u root -p, aby dostać się do mysql cli
trainoasis

6

Musisz zresetować hasło! kroki dla systemu Mac OSX (przetestowane i działające) i Ubuntu

Zatrzymaj MySQL

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

Uruchom w trybie awaryjnym:

$ sudo mysqld_safe --skip-grant-tables

(powyżej linii jest całe polecenie)

Będzie to ciągłe polecenie do zakończenia procesu, 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';

Uruchom MySQL

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

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


Otrzymałem wiadomość: nie wybrano bazy danych
Mimouni


5

Dla MySQL 5.7.6 i nowszych:

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

MySQL 5.7.5 i wcześniejsze:

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

3

W przypadku najnowszej wersji mysql (8.0.16) żadna z tych odpowiedzi nie zadziałała.

Po przyjrzeniu się kilku różnym odpowiedziom i połączeniu ich razem, oto co ostatecznie zadziałało:

update user set authentication_string='test' where user='root';

Mam nadzieję że to pomoże.


2

Częstym błędem, na który napotykam od czasu do czasu, jest to, że zapomniałem -popcji, więc czy na pewno użyłeś:

mysql -u root -p

2

W MySQL 5.7 hasło jest zastępowane ciągiem „authentication_string”.

posługiwać się

update user set authentication_string=password('myfavpassword') where user='root';

2

Użycie narzędzia wiersza poleceń mysqladmin do zmiany hasła MySQL:

mysqladmin --user=root --password=oldpassword password "newpassword"

Źródło


1

Wypróbowałem odpowiedź z @kta, ale nie zadziałała.

Używam MySQL 8.0

To zadziałało dla mnie:

mysql> SET PASSWORD FOR 'root'@'localhost' = 'yourpassword'


1
Dodaj wyjaśnienie do swojego kodu - jak dokładnie rozwiązuje to pytanie sprzed siedmiu lat?
Nico Haase

Wygląda na to, że składnia została zmieniona w ciągu siedmiu lat. To nie jest zawijanie hasła za pomocą HASŁA () dev.mysql.com/doc/refman/8.0/en/set-password.html
kangkyu


1

Tak wiele komentarzy, ale pomogła mi ta metoda:

sudo mysqladmin -u root password 'my password'

W moim przypadku po instalacji otrzymałem usługę mysql bez hasła dla użytkownika root i musiałem ustawić hasło dla mojego bezpieczeństwa.


Można go użyć do zresetowania hasła użytkownika root mysql bez znajomości starego. Ale upewnij się, że nikt nie ma dostępu do twojego syslogu, ponieważ to hasło jest rejestrowane:Aug 07 16:21:55 ubuntupc sudo[93250]: user : TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/usr/bin/mysqladmin -u root password 'my password'
Gryu

0

zatrzymaj wszystkie usługi wamp, wyjdź z wampa.

otwórz notatnik, a następnie wpisz> USTAW HASŁO DLA 'root' @ 'localhost' = PASSWORD ('');

następnie zapisz go na c: dysk pod dowolną nazwą .. na przykład „c: /example.txt”

teraz idź do swojego „wamp” falder wamp> bin> mysql> mysql (twoja wersja)> bin w mojej skrzynce ścieżka to „C: \ wamp \ bin \ mysql \ mysql5.6.17 \ bin”

teraz skopiuj ścieżkę, a następnie uruchom cmd z (ctrl + r), a następnie wpisz „cmd” (enter)

wpisz cd, a następnie kliknij prawym przyciskiem myszy cmd i wklej ścieżkę (enter) teraz wpisz (mysqld --init-file = C: \ example.txt) bez nawiasów klamrowych następnie (enter)

następnie uruchom ponownie komputer lub otwórz taskmgr i zabij mysqld.exe

uruchom wampa, a twoje hasło zostanie usunięte ...


0

Dla użytkowników MacOS, jeśli zapomnisz hasła roota, odpowiedź @ thusharaK ( https://stackoverflow.com/a/28601069/5628856 ) jest dobra, ale jest trochę więcej sztuczek:

Jeśli używasz preferencji systemowych, aby uruchomić mysql serveride, po prostu

sudo mysqld_safe --skip-grant-tables

może nie działać dla Ciebie.

Musisz upewnić się, że argumenty wiersza poleceń są takie same, jak w przypadku konfiguracji startowej systemu.

Następujące polecenie działa dla mnie:

/usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid --keyring-file-data=/usr/local/mysql/keyring/keyring --early-plugin-load=keyring_file=keyring_file.so --skip-grant-tables

Możesz użyć

ps aux | grep mysql

sprawdzić własne.


0

Lub po prostu użyj interaktywnej konfiguracji:

sudo mysql_secure_installation

-1

W systemie Ubuntu

sudo dpkg-reconfigure mysql-server-5.5 

Zastąp 5.5swoją aktualną wersją, a zostaniesz poproszony o podanie nowego hasła roota.


W jakim systemie operacyjnym? To nie ma sensu.
Khom Nazid

-1
  1. Na Macu otwórz preferencje systemowe> MySQL.
  2. W sekcji konfiguracji MySQL sprawdź zainicjowanie bazy danych.
  3. zmień hasło w monicie. zainicjuj bazę danych
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.