it-swarm.com.de

Zugriff auf MySQL nicht möglich, nachdem automatisch ein temporäres Kennwort generiert wurde

Ich habe OSX 10.11 El Capitan gelöscht und installiert und ich habe dieses Tutorial durchgearbeitet, um MySQL auf dem neuen OS X zum Laufen zu bringen. Der erste Schritt war das Herunterladen MySQL für Mac OS X 10.9 (x86, 64-bit), DMG Archive (funktioniert unter 10.11, empfohlen im Tutorial). Während ich mit der Installation von MySQL fertig war, wurde folgende Meldung angezeigt:

2015-10-25T02:10:54.549219Z 1 [Note] A temporary password is generated for [email protected]: R>gFySuiu23U

If you lose this password, please consult the section How to Reset the Root Password in the MySQL reference manual.

Das war komisch, ich habe noch nie eine solche Nachricht gesehen. Danach habe ich MySQL über das Einstellungsfenster gestartet und dann den Befehl /usr/local/mysql/bin/mysql -v auf dem Terminal für einen weiteren Schritt verwendet. Ich habe die folgende Fehlermeldung erhalten:

ERROR 1045 (28000): Access denied for user 'cheetah'@'localhost' (using password: NO)

Ich habe auch versucht, über Sequel Pro mit root als Benutzername und leerem Passwort auf die Datenbank zuzugreifen.

Unable to connect to Host 127.0.0.1 because access was denied.

Double-check your username and password and ensure that access from your current location is permitted.

MySQL said: Access denied for user 'root'@'localhost' (using password: NO)

Okay, ich habe es auch noch einmal mit root als Benutzername versucht, aber mit 'R> gFySuiu23U' als Passwort (das von MySQL generiert wurde). Ich habe die folgende Meldung erhalten, dass die Verbindung fehlgeschlagen ist:

Unable to connect to Host 127.0.0.1, or the request timed out.

Be sure that the address is correct and that you have the necessary privileges, or try increasing the connection timeout (currently 10 seconds).

MySQL said: Your password has expired. To log in you must change it using a client that supports expired passwords.

Wie könnte ich dieses Problem lösen? Ich erinnere mich, dass MySQL noch nie ein solches temporäres Passwort automatisch generiert hat, oder?

62
Cheetah Felidae

Versuche dies:

mysql -u root -h 127.0.0.1 -p
Enter password: (enter the random password here)

Ref: https://dev.mysql.com/doc/refman/5.7/de/data-directory-initialization-mysqld.html

Anschließend können Sie Ihr Passwort mit ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-password'; zurücksetzen.

99
Kumar Nitin

Dies hat bei mir unter OS X Yosemite funktioniert, auf dem MySql v5.7 (installiert von der .dmg) ausgeführt wird.

cd /usr/local/mysql/bin
./mysql -u root -p --connect-expired-password

(Geben Sie das vom Installationsprogramm generierte temporäre Kennwort ein.)

Dadurch gelangen Sie in den Sandbox-Modus und mysql> Prompt. Stellen Sie dann mit SET PASSWORD das gewünschte Root-Passwort ein:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mySuperSecretPassword');
38
Lesley

Jetzt, da das von MySQL generierte Passwort abgelaufen ist, wird das Problem dadurch reduziert, dass dieses Passwort wieder funktioniert (1) oder ein neues generiert wird (2). Dies kann durch Ausführen von MySQL mit der Option skip-grant-tables erreicht werden, wodurch die Zugriffsrechte ignoriert werden:

  1. Stoppen Sie Ihren MySQL-Server.

  2. Fügen Sie am Ende des Abschnitts [mysqld] der Datei my.cnf das Folgende ein und speichern Sie es.

    skip-grant-tables

  3. Starten Sie den MySQL Server.

  4. Geben Sie im Terminal ein

    mysql -u root -p

um in die MySQL-Eingabeaufforderung zu gelangen.

  1. Geben Sie in der Eingabeaufforderung Folgendes ein

    USE mysql;

um in die MySQL-Datenbank zu gelangen, in der die Datenbankbenutzer bleiben.

  1. Art 

    UPDATE user SET password_expired = 'N' WHERE User = 'root';

um MySQL mitzuteilen, dass das Passwort nicht abgelaufen ist (1) oder 

UPDATE user SET authentication_string = PASSWORD('YourNewPassword'), password_expired = 'N' WHERE User = 'root';

um ein neues Passwort YourNewPassword an root (2) zu vergeben.

34
Anton Nikiforov

Führen Sie diese Schritte unter OSX 10.11 El Capitan und MySQL 5.7.X durch.

Wenn man bedenkt, dass MySQL bereits installiert ist, dann ..

Öffnen Sie ein Terminalfenster und geben Sie Folgendes ein:

  1. Sudo /usr/local/mysql/support-files/mysql.server stop
  2. Sudo mysqld_safe --skip-grant-tables

Da der Befehl, der in Schritt 2 ausgelöst wird, sich im Status befindet, müssen Sie ein anderes Terminalfenster öffnen und dann Folgendes eingeben:

  1. mysql -u root -p
  2. UPDATE mysql.user SET password_expired = 'N', authentication_string = PASSWORD ('') WHERE User = 'root';
  3. verlassen;
  4. Sudo /usr/local/mysql/support-files/mysql.server neu starten

Wichtig : In Schritt 2 müssen Sie Ihr Passwort ersetzen.

Ich hoffe es wird für Sie wok.

15
Marcelo

MySQL-Passwort ist abgelaufen

Durch das Zurücksetzen des Kennworts wird das Problem vorübergehend gelöst. In MySQL 5.7.4 bis 5.7.10 (ich denke, um die Sicherheit zu verbessern) ist der Standardwert für die Variable default_password_lifetime 360 (etwa ein Jahr). Wenn Sie für diese Versionen keine Änderungen an dieser Variablen (oder an einzelnen Benutzerkonten) vornehmen, verfallen alle Benutzerkennwörter nach 360 Tagen.

Normalerweise erhalten Sie in einem Skript 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 den automatischen Ablauf von Kennwörtern zu verhindern, melden Sie sich als root (mysql -u root -p) an. Dann ändern Sie für clients, die automatisch eine Verbindung zum Server herstellen (z. B. Skripts), die Kennwortablaufeinstellungen für diese Clients:

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;

Links:

MySQL: Passwortablauf und Sandbox-Modus
MySQL: Richtlinien zum Ablauf von Kennwörtern
Passwortablaufrichtlinie in MySQL Server 5.7

5
Dave Everitt

Ich verwende macOS Sierra (10.12.3) und installierte mysql-5.7.17-macos10.12-x86_64.dmg.

Die Antwort von @lesley funktionierte für mich mit der Ausnahme, dass ich ./ hinzufügen musste, um sicherzustellen, dass die mysql-Binärdatei in meinem aktuellen Arbeitsverzeichnis aufgerufen wurde. Dort wurde das zuvor genannte Paket installiert. 

Wenn Sie cd zu /usr/local/mysql/bin wechseln und mysql -u root -p --connect-expired-password ausführen, wird möglicherweise die folgende Fehlermeldung angezeigt. 

mysql: unknown option '--connect-expired-password'

Ich tat. Weil einfach mysql ohne Angabe eines Pfads ausgeführt wird, eine zuvor installierte Version des MariaDB-Clients genannt.

Um sicherzustellen, dass Sie die korrekte Binärdatei ausführen, können Sie dies tun

geben Sie den absoluten Pfad an 

/usr/local/mysql/bin/mysql -u root -p --connect-expired-password

oder der relative Pfad nach dem Verzeichniswechsel

cd /usr/local/mysql/bin
./mysql -u root -p --connect-expired-password

Beide Möglichkeiten sollten funktionieren. Sobald Sie mit dem Client verbunden sind, sind die Anweisungen die gleichen wie in @lesley.

Geben Sie Ihr vom Installationsprogramm generiertes temporäres Passwort ein und legen Sie Ihr neues Passwort fest. 

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yourNewPassword'); 
4
najemnyvrah

Ich hatte das gleiche Problem. Ich folgte der Installationsanleitung von https://www.ntu.edu.sg/home/ehchua/programming/sql/MySQL_HowTo.html und lud das DMG-Archiv herunter und installierte MySQL unter MAC OS X 10.12.2.

Schließlich wurden die folgenden Befehle auf dem neuen Terminal ausgeführt.

cd /usr/local/mysql/bin

./mysql -u root -p --connect-expired-password

Es funktionierte.

2
hygull

Antwort 7 funktionierte für mich: El capitan, MySQL wurde von dmg installiert und das Kennwort wurde automatisch generiert. Vor der Eingabe von /usr/local/bin/mysql war jedoch unbedingt cd auf ./mysql -root -p festgelegt.

Nun finden Sie heraus, wo sich all meine Datenbanken und Tabellen befinden und wie Sie diese verknüpfen.

1
james meek

Für MySQL 5.7 verwende ich 

Shell $> Sudo grep 'temporäres Passwort' /var/log/mysqld.log

1
ji-ruh

Diese besondere hat den Trick für mich gemacht:

Wie in diesem Link angegeben: https://www.variphy.com/kb/mac-os-x-reset-mysql-root-password

Führen Sie alle Schritte außer der Ausführung aus

    UPDATE mysql.user SET Password=PASSWORD('NewPassword') WHERE User='root';

Ausführen 

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

Und dann ausführen FLUSH PRIVILEGES;

1

Die andere Möglichkeit, dieses Problem zu lösen, besteht darin, stattdessen eine ältere Version von MySQL zu verwenden.

Ich habe MySQL version 5.7.9 für Mac OS X 10.9 (x86, 64-Bit) und DMG Archive deinstalliert und anschließend die ältere Version MySQL version 5.6.7 für Mac OS X 10.9 (x86, 64-Bit), DMG-Archiv installiert. Dieses Problem ist gelöst. Das vorgegebene automatisch generierte Passwort ist vor der Installation dieser älteren Version nicht mehr verfügbar, und ich kann schließlich mit root als Benutzername und einem leeren Passwort auf die Datenbank zugreifen. Alles funktioniert wie ein Zauber!

0
Cheetah Felidae

Ich bin dieses Problem umgangen, indem ich .__ ausgeführt habe. 'mysql -u root -p --connect-expired-password' Geben Sie dann das abgelaufene Kennwort für die automatische Generierung von mysql ein. Endlich rein. Ausgewählte MySQL-Datenbank mit 'use mysql' und dann Benutzer 'root' pw mit .__ aktualisiert. 'ALTER USER 'root'@'localhost' IDENTIFIED BY 'your new password'

0
Shelby Bedzyk

Ich habe view brew installiert und hatte die gleiche Fehlermeldung, bis ich diese Einschränkung bemerkte:

Wir haben Ihre MySQL-Datenbank ohne Root-Passwort installiert. Um sicherzustellen, dass es ausgeführt wird: mysql_secure_installation

Um eine Verbindung herzustellen, führen Sie Folgendes aus: Mysql -uroot

Starten Sie mysql jetzt und starten Sie ihn beim Anmelden neu: Brew Services starten MySQL

Wenn Sie keinen Hintergrunddienst benötigen/brauchen, können Sie einfach Folgendes ausführen: mysql.server start

0
as21

Bei der manuellen Installation von MySQL durch das erste Herunterladen von Paketen wird ein Standardkennwort für root generiert. Kopieren und speichern Sie das. Wenn dies bei aufeinanderfolgenden Neuinstallationen nicht geschieht, wird dieses Kennwort nicht angezeigt. 

Daher können Sie sich nicht bei root ..__ anmelden. Gehen Sie folgendermaßen vor:

  1. Finde mysql-bezogene Einträge im System Sudo find / -name mysql
  2. Entfernen Sie alle mysql-bezogenen Einträge, indem Sie rm -rf <mysql_entries_above> ausführen.
  3. Laden Sie den neuesten MySQL-Server herunter und installieren Sie ihn.
  4. Sie erhalten ein Standardkennwort, das Sie kopieren müssen.
  5. Führen Sie mysql_secure_installation aus und fügen Sie dieses Kennwort ein, wenn Sie nach root gefragt werden.
  6. Folgen Sie anschließend den Schritten und ändern Sie das Administratorkennwort, wenn Sie dazu aufgefordert werden.
0
Souvik Das