Ä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.

user3310572
quelle
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%";
Höllenjunge
quelle
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.

Govind Rai
quelle
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');
Vijay Kumar
quelle
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;
Robert Anthony S. Tribiana
quelle
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';"
David Silva Smith
quelle
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.

Napolean
quelle
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';
Kirti Nikam
quelle
0

Ab MySQL 8.0.18 funktioniert das gut für mich

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

Mykoman
quelle
-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.

user353gre3
quelle
1
Funktioniert nicht Rückgabe eines Syntaxfehlers in der Nähe eines unerwarteten Tokens ('
user3310572