Ändern Sie das MySQL-Benutzerpasswort über die Befehlszeile


84

Ich versuche, das Kennwort für einen Datenbankbenutzer über die Befehlszeile zu aktualisieren, aber es funktioniert bei mir nicht. Dies ist der Code, den ich verwende:

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

Könnte mir jemand sagen, was mit diesem Code falsch ist.


Nun, welche Schritte folgen Sie? Einfach einzustecken funktioniert nicht. Wenn ich mich richtig erinnere, ist es ein Prozess und dieser Code.
Idris

Ah. Erinnerst du dich an den Prozess, wie es geht?
user3310572

Dies ist ein bisschen detaillierter und sollte leichter zu verstehen sein innovativethought.net/2007/05/17/…
Idris

Antworten:


115

Versuchen Sie, in Ihrem Code ein Passwort in ein einfaches Anführungszeichen zu setzen. Alternativ sollte gemäß der Dokumentation von MySQL Folgendes funktionieren:

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

FLUSH PRIVILEGES;

Die letzte Zeile ist wichtig, sonst wird Ihre Passwortänderung leider nicht wirksam.

BEARBEITEN:

Ich habe einen Test in meiner Region durchgeführt und es hat funktioniert -

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

Meins ist Version 5. Sie können den folgenden Befehl verwenden, um Ihre Version zu bestimmen -

SHOW VARIABLES LIKE "%version%";

4
Wenn ich das mache, wird ein Syntaxfehler in der Nähe eines unerwarteten Tokens zurückgegeben ('
user3310572

1
Welche MySQL-Version verwenden Sie? Ich habe die obige Syntax aus der Dokumentation zu Version 5.0 übernommen. Haben Sie den von mir geposteten Befehl ausprobiert?
Hellboy

Ich glaube, ich benutze eine 4.0-Version und ja, ich habe es versucht
user3310572

Der Befehl funktioniert in MySQL Version 14.14 gut. Stellen Sie sicher, dass das Kennwort in Anführungszeichen eingeschlossen ist und alle Anführungszeichen im Kennwort maskiert sind.
Snaver

1
Seltsamerweise funktioniert es auch nach dem Spülen immer noch nicht für mich :-( Ich benutze MySQL5.7.18-0ubuntu0.16.04.1
Coding_idiot

37

Verwenden Sie ab MySQL 5.7.6 ALTER USER

Beispiel:

ALTER USER 'username' IDENTIFIED BY 'password';

Weil:

  • SET PASSWORD ... = PASSWORD('auth_string') Die Syntax ist ab MySQL 5.7.6 veraltet und wird in einer zukünftigen MySQL-Version entfernt.

  • SET PASSWORD ... = 'auth_string'Die Syntax ist nicht veraltet, aber ALTER USERjetzt die bevorzugte Anweisung zum Zuweisen von Kennwörtern.


1
Gilt das auch für die Interaktion mit MySQL über PHP?
Oldboy

@ Anthony ja, wenn Ihre MySQL-Version> = 5.7.6 ist
Govind Rai

Ich bin neu in MySQL. was macht ALTER USER ... IDENTIFIED BY ...genau Wie unterscheidet sich das von UPDATE ... SET ...oder INSERT INTO ...?
Oldboy

1
ALTER USER ... IDENTIFIED BY ...ist eine SQL-Anweisung, die Benutzerberechtigungen für Ihre Datenbank konfiguriert. UPDATEund INSERThaben verschiedene Funktionen, die, wie die Namen andeuten, Datensätze aktualisieren und Datensätze in Tabellen in Ihrer Datenbank einfügen.
Govind Rai

2
gibt Fehler in 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

Hinweis: Sie sollten sich als Root anmelden

 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('your password');

5

Dies ist die aktualisierte Antwort für WAMP v3.0.6

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

FLUSH PRIVILEGES;

3

Vor MySQL 5.7.6 funktioniert dies über die Befehlszeile:

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

Ich habe keine MySQL-Installation zum Testen, aber ich denke in Ihrem Fall wäre es

mysql -e "UPDATE mysql.user SET Password=PASSWORD('$w0rdf1sh') WHERE User='tate256';"

2

Beenden Sie in Windows 10 einfach die aktuelle Anmeldung und führen Sie diese in der Befehlszeile aus

-> mysqladmin -u root password “newpassword”

wo anstelle von root könnte jeder Benutzer sein.


1

Das funktioniert bei mir. Ich habe eine Lösung von der MYSQL-Webseite erhalten

Führen Sie in MySQL die folgenden Abfragen aus:

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'New_Password';

0

Ab MySQL 8.0.18 funktioniert das gut für mich

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


-1

Ihr Login-Stamm sollte sein /usr/local/directadmin/conf/mysql.conf. Versuchen Sie dann zu folgen

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

Host ist Ihr MySQL-Host.


1
Funktioniert nicht Rückgabe eines Syntaxfehlers in der Nähe eines unerwarteten Tokens ('
user3310572
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.