Zmień hasło użytkownika mysql za pomocą wiersza poleceń

84

Próbuję zaktualizować hasło użytkownika bazy danych za pomocą wiersza poleceń, ale to nie działa. Oto kod, którego używam:

mysql> UPDATE user SET password=PASSWORD($w0rdf1sh) WHERE user='tate256';

Czy ktoś mógłby mi powiedzieć, co jest nie tak z tym kodem.

user3310572
źródło
Jakie kroki podążasz? Samo włożenie go nie zadziała. Jeśli dobrze pamiętam, to proces i ten kod.
Idris
Ach. Czy pamiętasz proces, jak to zrobić?
user3310572
Jest to trochę bardziej szczegółowe i powinno być łatwiejsze do zrozumienia innovativethought.net/2007/05/17/…
Idris

Odpowiedzi:

115

W swoim kodzie spróbuj umieścić hasło w pojedynczym cudzysłowie. Alternatywnie, zgodnie z dokumentacją mysql, powinno działać:

SET PASSWORD FOR 'jeffrey'@'localhost' = PASSWORD('cleartext password');

FLUSH PRIVILEGES;

Ostatnia linia jest ważna, w przeciwnym razie zmiana hasła nie odniesie skutku.

EDYTOWAĆ:

Przeprowadziłem test w moim lokalnym i zadziałał -

mysql>  set password for 'test' = PASSWORD('$w0rdf1sh');
Query OK, 0 rows affected (0.00 sec)

Moja to wersja 5. Możesz użyć następującego polecenia, aby określić swoją wersję -

SHOW VARIABLES LIKE "%version%";
piekielny chłopak
źródło
4
Kiedy to robię, zwraca błąd składni w pobliżu nieoczekiwanego tokenu (
``
1
Jakiej wersji mysql używasz? Podniosłem powyższą składnię z dokumentacji wersji 5.0. Czy wypróbowałeś polecenie, które opublikowałem?
hellboy
Uważam, że używam wersji 4.0 i tak, próbowałem
user3310572
Polecenie działa dobrze dla mnie w MySQL Ver 14.14, upewnij się, że hasło jest zawinięte w cudzysłowy, a wszelkie cudzysłowy w haśle są chronione.
Snaver
1
O dziwo, nawet po spłukaniu nadal nie działa dla mnie :-( używam MySQL5.7.18-0ubuntu0.16.04.1
coding_idiot
37

Od MySQL 5.7.6 użyj ALTER USER

Przykład:

ALTER USER 'username' IDENTIFIED BY 'password';

Dlatego:

  • SET PASSWORD ... = PASSWORD('auth_string') składnia jest przestarzała od wersji MySQL 5.7.6 i zostanie usunięta w przyszłej wersji MySQL.

  • SET PASSWORD ... = 'auth_string'składnia nie jest przestarzała, ale ALTER USERjest teraz preferowaną instrukcją do przypisywania haseł.

Govind Rai
źródło
1
czy to prawda nawet w przypadku interakcji z MySQL przez PHP?
oldboy
@Anthony tak, jeśli twoja wersja MySQL to> = 5.7.6
Govind Rai
Jestem nowy w MySQL. co ALTER USER ... IDENTIFIED BY ...dokładnie robi? czym to się różni od UPDATE ... SET ...lub INSERT INTO ...?
oldboy,
1
ALTER USER ... IDENTIFIED BY ...to instrukcja SQL, która konfiguruje uprawnienia użytkownika do bazy danych. UPDATEi INSERTmają różne funkcjonalności, które jak sugerują nazwy, aktualizują rekordy i wstawiają rekordy do tabel w twojej bazie danych.
Govind Rai
2
daje błąd w mariaDbERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'USER 'root' IDENTIFIED BY
Pavel Niedoba
14

Uwaga: powinieneś zalogować się jako użytkownik root

 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('your password');
vijay kumar
źródło
6

to jest zaktualizowana odpowiedź dla WAMP v3.0.6

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

FLUSH PRIVILEGES;
Robert Anthony S. Tribiana
źródło
3

Przed MySQL 5.7.6 działa to z wiersza poleceń:

mysql -e "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('$w0rdf1sh');"

Nie mam instalacji mysql do przetestowania, ale myślę, że w twoim przypadku tak będzie

mysql -e "UPDATE mysql.user SET Password=PASSWORD('$w0rdf1sh') WHERE User='tate256';"
David Silva Smith
źródło
2

W systemie Windows 10 po prostu wyjdź z bieżącego logowania i uruchom go w wierszu poleceń

-> mysqladmin -u root password “newpassword”

gdzie zamiast roota może być dowolny użytkownik.

Napolean
źródło
1

To działa dla mnie. Mam rozwiązanie ze strony internetowej MYSQL

W MySQL uruchom poniższe zapytania:

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'New_Password';
Kirti Nikam
źródło
0

Od MySQL 8.0.18 To działa dobrze dla mnie

mysql> SET PASSWORD FOR 'user'@'localhost' = 'userpassword';

mykoman
źródło
-1

Twój root logowania powinien być /usr/local/directadmin/conf/mysql.conf. Następnie spróbuj podążać

UPDATE mysql.user SET password=PASSWORD('$w0rdf1sh') WHERE user='tate256' AND Host='10.10.2.30';
FLUSH PRIVILEGES;

Host to Twój host mysql.

user353gre3
źródło
1
Nie działa.
Zwracający