Ich habe gerade meinen Mac abgewischt und El Capitan neu installiert. Ich habe jetzt Probleme, mich mit MySQL zu verbinden. 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 ausführe, erhalte ich folgende Fehlermeldung:
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 von einer Verbindung noch nie gesehen. Wie behebe ich das Problem, wenn ich keine Verbindung herstellen kann?
BEARBEITEN
Im Terminal habe ich den Befehl eingegeben:
mysql -u root -p
Dies fragte mich nach meinem Passwort (aktuelles), das ich eingegeben habe. Ich habe jetzt Zugriff auf MySQL-Befehle, aber alles, was ich versuche, führt zu diesem Fehler:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
Wie setze ich das Passwort mit zurück ALTER USER
?
php
mysql
macos
osx-elcapitan
CaribouCode
quelle
quelle
/usr/local/mysql/bin/mysqladmin -u root -p password
Antworten:
Also habe ich endlich selbst die Lösung gefunden.
Zuerst ging ich ins Terminal und tippte:
mysql -u root -p
Dies fragte nach meinem aktuellen Passwort, das ich eingegeben hatte, und es gab mir Zugriff, um mehr MySQL-Befehle bereitzustellen. Alles, was ich von hier aus versuchte, 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
ALTER USER
Anweisung zurückzusetzen, aber ich habe eine andere einfache Lösung gefunden:SET PASSWORD = PASSWORD('xxxxxxxx');
quelle
Zuerst benutze ich:
Geben Sie mein aktuelles Passwort für das 'root' an. Nächster:
Ändern Sie
'new_password'
ein neues Passwort für den Benutzer 'root'.Es hat mein Problem gelöst.
quelle
ERROR 1805 (HY000): Column count of mysql.user is wrong. Expected 45, found 46. The table is probably corrupted
mysqladmin -u [username] -p password
arbeitete für mich unter OS X El Capitan und MySQL 5.7.12 Community Server. Beispiel:Dies ähnelt der 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." beim ersten Mal auf dem Anmeldebildschirm von phpMyAdmin.
quelle
mysqladmin -u [username] -p password
Ablauf des MySQL-Passworts
Durch das Zurücksetzen des Passworts wird das Problem nur vorübergehend behoben. Von MySQL 5.7.4 bis 5.7.10 (um eine bessere Sicherheit zu gewährleisten - siehe MySQL: Kennwortablaufrichtlinie )
default_password_lifetime
beträgt der Standardvariablenwert 360 (1 Jahr). Wenn Sie in diesen Versionen keine Änderungen an dieser Variablen (oder an einzelnen Benutzerkonten) vornehmen, verfallen alle Kennwörter nach 360 Tagen.In einem Skript wird möglicherweise die Meldung angezeigt: "Ihr Kennwort ist abgelaufen. Um sich anzumelden, müssen Sie es mit einem Client ändern, der abgelaufene Kennwörter unterstützt."
Um den automatischen Ablauf des Kennworts zu stoppen, melden Sie sich als root (
mysql -u root -p
) an . Ändern Sie dann für Clients, die automatisch eine Verbindung zum Server herstellen (z. B. Skripte), die Einstellungen für den Ablauf des Kennworts: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 einer
my.cnf
Datei hinzu, die MySQL beim Start unter der[mysqld]
Gruppe von Einstellungen liest , um diese dauerhaft zu machen . Der Speicherort vonmy.cnf
hängt von Ihrem Setup ab (z. B. Windows oder Homebrew unter OS X oder einem Installationsprogramm) und davon, ob Sie diesen Benutzer unter Unix oder global verwenden möchten:[mysqld]
default_password_lifetime = 0
(Möglicherweise gibt es auch hier andere Einstellungen ...)Weitere Informationen finden Sie in den MySQL-Dokumenten zu Konfigurationsdateien .
quelle
Ich habe kürzlich das gleiche Problem bei der Installation von MySQL auf Mac OS X Capitan durchlaufen. Ich habe hier nicht die richtige Antwort gefunden und diese Antwort hinzugefügt.
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.
Hoffe es hilft dir und anderen.
quelle
Laden Sie einfach die MySQL Workbench herunter, um sich anzumelden. Sie werden aufgefordert, das Kennwort sofort und automatisch zu ändern.
quelle
Starten Sie MYSQL im abgesicherten Modus
Stellen Sie eine Verbindung zum MYSQL-Server her
Führen Sie SQL-Befehle aus, um das Kennwort zurückzusetzen:
Letzter Schritt: Starten Sie Ihren MySQL-Dienst neu
quelle
Ich habe dieses Problem vor ein paar Tagen konfrontiert. Für die beste Lösung für die 5.7-Version von MySQL; Melden Sie sich bei Ihrer MySQL-Konsole an und ändern Sie Ihr Passwort mit dem folgenden Befehl:
quelle
WARNUNG: Dadurch kann sich jeder Benutzer anmelden
Ich musste etwas anderes ausprobieren. Da mein Root-Passwort abgelaufen ist und das Ändern keine Option war, weil
Column count of mysql.user is wrong. Expected 45, found 46. The table is probably corrupted
Das vorübergehende Hinzufügen von
skip-grant-tables
under[mysqld]
inmy.cnf
und das Neustarten von mysql haben den Trick getanquelle
Unter Windows in phpmyadmin suchen Sie unter Variablen: default_password_lifetime und schalten Sie es auf 0 (anstelle von 360).
Es ist möglich, dass mySQL wieder 360 Tage dauert. Fügen Sie also my.ini hinzu:
Und starten Sie MySQL neu.
quelle
Das hat bei mir funktioniert:
quelle
Starten Sie den MySQL-Server mit der Option --skip-grant-tables neu und legen Sie dann ein neues Root-Passwort fest
Bei Bedarf können Sie jetzt die Tabelle mysql.user (Feld password_expired = 'N') aktualisieren, damit das Kennwort nicht abläuft.
quelle
mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
mysql -u root -p
ich den ersten BefehlYou must reset your password using ALTER USER statement before executing this statement.
Alle diese Antworten verwenden Linux-Konsolen, um auf MySQL zuzugreifen.
Wenn Sie unter Windows arbeiten und WAMP verwenden, können Sie zunächst die MySQL-Konsole (
click WAMP icon->MySQL->MySQL console
) öffnen .Anschließend werden Sie aufgefordert, Ihr aktuelles Passwort einzugeben.
Und dann tippen
SET PASSWORD = PASSWORD('some_pass');
quelle
beste einfache Lösung:
und funktioniert dann gut.
quelle
Diese Arbeit für mich:
Quelle: https://www.diariodeunprogramador.net/fallo-al-conectar-mysql-your-password-expired/
Als root anmelden:
und dann deaktivieren Sie den automatischen Ablauf von Passwörtern aller Benutzer:
quelle
Der Kennwortablauf ist eine neue Funktion in MySQL 5.6 oder 5.7.
Die Antwort ist klar: Verwenden Sie einen Client, dessen Kennwort abgelaufen ist (ich denke, Sequel Pro kann das).
Die MySQLi-Bibliothek kann das abgelaufene Passwort offensichtlich nicht ändern.
Wenn Sie nur eingeschränkten Zugriff auf localhost haben und nur einen Konsolenclient haben, kann dies der Standard-MySQL-Client tun.
quelle
Öffnen Sie die MySQL-Konsole und geben Sie SET PASSWORD = 'Ihr Passwort' 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; Dadurch wird das Kennwort für den Root-Benutzer als leer festgelegt.
quelle
Ich habe so etwas gemacht.
quelle
You must reset your password using ALTER USER statement before executing this statement.