it-swarm.com.de

MySQL-Passwort abgelaufen. Ich kann keine Verbindung herstellen

Ich habe gerade meinen Mac gewischt und El Capitan neu installiert. Ich habe jetzt Probleme, eine Verbindung zu MySQL herzustellen. Nachdem ich einen Webserver-Setup-Prozess durchlaufen habe, habe ich eine einfache PHP Testdatei erstellt:

<?php
  $conn = new mysqli("127.0.0.1", "root", "xxxxxxxx");
  if ($conn->connect_error) echo "Connection failed: " . $conn->connect_error; 
  else echo "Connected successfully";
  phpinfo();
?>

Wenn ich es laufen lasse, erhalte ich diesen Fehler:

Warning: mysqli::mysqli(): (HY000/1862): Your password has expired. To log in you must change it using a client that supports expired passwords. in /Users/rich/Documents/DESIGN/test/index.php on line 3
Connection failed: Your password has expired. To log in you must change it using a client that supports expired passwords.

Ich habe diese Antwort noch nie von einer Verbindung gesehen. Wie behebe ich das Problem, wenn ich keine Verbindung herstellen kann?

EDIT

Im Terminal habe ich den Befehl eingegeben:

mysql -u root -p

Hier wurde ich nach meinem (aktuellen) Passwort gefragt, das ich eingegeben habe. Ich habe jetzt Zugriff auf mysql-Befehle, aber alles, was ich versuche, führt zu folgendem Fehler:

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

Wie setze ich das Passwort mit ALTER USER Zurück?

78
Coop

Also habe ich endlich selbst die Lösung gefunden.

Zuerst ging ich ins Terminal und tippte:

mysql -u root -p

Hier wurde nach meinem aktuellen Passwort gefragt, das ich eingegeben habe, und es gab mir Zugriff, um mehr mysql-Befehle bereitzustellen. Alles, was ich hier ausprobierte, gab diesen Fehler:

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

Dies ist verwirrend, da ich keine Möglichkeit gefunden habe, das Kennwort mithilfe der Anweisung ALTER USER Zurückzusetzen, aber ich habe eine andere einfache Lösung gefunden:

SET PASSWORD = PASSWORD('xxxxxxxx');

168
Coop

Zuerst benutze ich:

 mysql -u root -p

Geben Sie mein aktuelles Passwort für den 'root' an. Nächster:

mysql> ALTER USER `root`@`localhost` IDENTIFIED BY 'new_password',
       `root`@`localhost` PASSWORD EXPIRE NEVER;

Veränderung 'new_password' ein neues Passwort für den Benutzer 'root'.
Es hat mein Problem gelöst.

80
Piotr N.

mysqladmin -u [username] -p password arbeitete für mich unter OS X El Capitan und MySQL 5.7.12 Community Server. Beispiel:

$ /usr/local/mysql/bin/mysqladmin -u root -p password
Enter password:
New password:
Confirm new password:
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

Dies ist ähnlich wie die Antwort von pavan sachi, jedoch mit Passwortabfragen.

Mein Fehler war "# 1862 - Ihr Passwort ist abgelaufen. Um sich anzumelden, müssen Sie es mit einem Client ändern, der abgelaufene Passwörter unterstützt." bei phpMyAdmin Anmeldebildschirm zum ersten Mal.

45
Kit

Ablauf des MySQL-Passworts

Durch Zurücksetzen des Passworts wird das Problem nur vorübergehend behoben. Von MySQL 5.7.4 bis 5.7.10 (um die Sicherheit zu verbessern - siehe MySQL: Password Expiration Policy ) den Standardwert default_password_lifetime Variablenwert ist 360 (1 Jahr). Wenn Sie in diesen Versionen keine Änderungen an dieser Variablen (oder an einzelnen Benutzerkonten) vornehmen , laufen alle Kennwörter nach 360 Tagen ab.

In einem Skript erhalten Sie möglicherweise die Meldung: "Ihr Kennwort ist abgelaufen. Um sich anzumelden, müssen Sie es mit einem Client ändern, der abgelaufene Kennwörter unterstützt."

Um das automatische Ablaufen des Kennworts zu beenden, melden Sie sich als root an (mysql -u root -p) ändern Sie dann für Clients, die automatisch eine Verbindung zum Server herstellen (z. B. Skripts), die Kennwortablaufeinstellungen:

ALTER USER 'script'@'localhost' PASSWORD EXPIRE NEVER;

[~ # ~] oder [~ # ~] Sie können den automatischen Kennwortablauf für alle Benutzer deaktivieren :

SET GLOBAL default_password_lifetime = 0;

Wie von Mertaydin in den Kommentaren hervorgehoben, fügen Sie die folgende Zeile zu einem my.cnf Datei, die MySQL beim Start liest, unter dem [mysqld] Gruppe von Einstellungen. Die Lage der my.cnf hängt von Ihrem Setup ab (z. B. Windows oder Homebrew unter OS X oder einem Installationsprogramm) und davon, ob Sie dies für einzelne Benutzer unter Unix oder global wünschen:

[mysqld] default_password_lifetime = 0 (Möglicherweise gibt es auch hier andere Einstellungen ...)

Siehe MySQL-Dokumente zu Konfigurationsdateien .

15
Dave Everitt

Ich habe vor kurzem das gleiche Problem durchlaufen, als ich mysql auf mac os x capitan installiert habe. Ich habe hier nicht die richtige Antwort gefunden, also diese Antwort hinzufügen.

MySql generiert in aktuellen Versionen ein temporäres Kennwort, wenn Sie mysql installieren. Verwenden Sie dieses Kennwort, um ein neues Kennwort mit dem Dienstprogramm mysqladmin wie folgt festzulegen.

/ usr/local/mysql/bin/mysqladmin -u root -p '<Ihr temporäres Passwort>' Passwort '<Ihr neues Passwort>'

Hoffe es hilft dir und anderen.

11
pavan sachi

Laden Sie einfach die MySQL-Workbench herunter, um sich anzumelden. Sie werden aufgefordert, das Kennwort sofort und automatisch zu ändern.

7
Grassright

starten Sie MYSQL im abgesicherten Modus

mysqld_safe --skip-grant-tables &

Stellen Sie eine Verbindung zum MYSQL-Server her

mysql -u root

führen Sie die folgenden SQL-Befehle aus, um das Kennwort zurückzusetzen:

use mysql;
SET GLOBAL default_password_lifetime = 0;
SET PASSWORD = PASSWORD('new_password');

Letzter Schritt, starten Sie Ihren MySQL-Dienst neu

4
Dylan B

ich habe dieses Problem vor ein paar Tagen konfrontiert. Für die beste Lösung für die 5.7-Version von MySQL; Loggen Sie sich in Ihre MySQL-Konsole ein und ändern Sie Ihr Passwort mit dem folgenden Befehl:

ALTER USER `root`@`localhost` IDENTIFIED BY 'new_password', `root`@`localhost` PASSWORD EXPIRE NEVER;
4
Mehmet MERCAN

Unter Windows in phpmyadmin schauen Sie unter Variablen: default_password_lifetime nach und stellen Sie es auf 0 (anstelle von 360), und genießen Sie.

Es ist möglich, dass mySQL erneut 360 Tage in Anspruch nimmt. Fügen Sie also in my.ini Folgendes hinzu:

[mysqld]
default_password_lifetime=0

Und starten Sie MySQL neu.

3
Laurent Zminka

ACHTUNG: Damit kann sich jeder Benutzer anmelden

Ich musste etwas anderes ausprobieren. Da mein root-Passwort abgelaufen ist und sich nicht mehr ändern ließ, kam das nicht in Frage

Column count of mysql.user is wrong. Expected 45, found 46. The table is probably corrupted

temporäres Hinzufügen von skip-grant-tables unter [mysqld] im my.cnf und Neustart von MySQL hat den Trick getan

3
Marius.C

Das hat bei mir funktioniert:

ALTER USER 'root' @ 'localhost' IDENTIFIZIERT DURCH 'yourpassword', 'root' @ 'localhost' PASSWORT NIE VERFALLEN;

3
Robert Saylor

beste einfache Lösung:

[PATH MYSQL]/bin/mysql -u root
[Enter password]
SET GLOBAL default_password_lifetime = 0;

und dann funktioniert gut.

1
Fastorro

Alle diese Antworten verwenden Linux-Konsolen, um auf MySQL zuzugreifen.

Wenn Sie unter Windows arbeiten und WAMP verwenden, können Sie die MySQL-Konsole öffnen (click WAMP icon->MySQL->MySQL console).

Dann werden Sie aufgefordert, Ihr aktuelles Passwort einzugeben, geben Sie es ein.

Und dann geben Sie SET PASSWORD = PASSWORD('some_pass');

1
Rust

starten Sie den MySQL-Server mit der Option --skip-grant-tables neu und legen Sie dann ein neues root-Passwort fest

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

Jetzt können Sie bei Bedarf die Tabelle mysql.user (Feld password_expired = 'N') aktualisieren, damit das Kennwort nicht abläuft.

0

Öffnen Sie die MySQL-Konsole und geben Sie SET PASSWORD = 'your password' ein. Drücken Sie anschließend die EINGABETASTE, um Ihr definiertes Kennwort für den Benutzer root festzulegen.

Sie können nur SET PASSWORD = '' schreiben; Hierdurch wird das Kennwort für den Root-Benutzer als leer festgelegt.

0
Prasant Kumar

Ich habe so etwas gemacht.

UPDATE mysql.user SET authentication_string = PASSWORD (''), password_expired = 'N' WHERE Benutzer = 'root' AND Host = 'localhost';

0

Der Kennwortablauf ist eine neue Funktion in MySQL 5.6 oder 5.7.

Die Antwort ist klar: Verwenden Sie einen Client, dessen Kennwort geändert werden kann (ich denke, Sequel Pro kann dies).

Die MySQLi-Bibliothek kann das abgelaufene Kennwort offensichtlich nicht ändern.

Wenn Sie nur eingeschränkten Zugriff auf localhost haben und nur einen Konsolen-Client haben, kann dies der Standard-MySQL-Client tun.

0
Daniel W.