mysql_connect (): Der Server hat eine Authentifizierungsmethode angefordert, die dem Client [mysql_old_password] in unbekannt ist

8

Ich versuche, PHP 5.4.1 (aus dem Quellcode kompiliert) auszuführen, aber wenn ich versuche, eine Verbindung über MySQL herzustellen, erhalte ich:

Warning: mysql_connect(): The server requested authentication method unknown to the client [mysql_old_password] in

Bei Verwendung von PHP 5.3 / 5.2 funktioniert es normal. Irgendwelche Ideen, was dieses Problem verursacht?

Fernando
quelle
Siehe diese Antwort in einer anderen Frage: stackoverflow.com/a/50776838/1041047
Robin Qiu

Antworten:

10

Versuchen Sie dies zu lesen: Link

MySQL hat in (glaube ich) Version 4.1 längere Passwort-Hashes eingeführt, und Ihr Server verwendet diese wahrscheinlich immer noch (überprüfen Sie Ihre MySQL-Benutzertabelle auf 16-Byte-Passwort-Hashes). Neuere Versionen verwenden längere Passwort-Hashes. Ihr Server unterstützt beide, aber Ihr Client (PHP) scheint nur neue in dieser Version (und auf) zu unterstützen.

Wenn dies möglich ist, verwenden Sie die Lösung über den Link in der ersten Zeile und legen Sie Ihr Kennwort erneut mit dem neuen Hash fest. Beachten Sie jedoch, dass die Kompatibilität möglicherweise beeinträchtigt wird, wenn Sie andere (alte) Clients verwenden, die auf alten Kennwörtern basieren. Versuchen Sie auch, nach Unterstützung für alte Passwörter für MySQL in PHP zu suchen, aber ich bin mir nicht sicher.

Mulaz
quelle
8
ALTER USER 'mysqlUsername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysqlUsernamePassword';
Robin Qiu
quelle
Diese Antwort löste dieses Problem für mich serverfault.com/questions/295285/…
Vishrant
3

Ich weiß, dass dies ein altes Thema ist, aber ich habe das Problem umgangen, ohne etwas aktualisieren / downgraden zu müssen. Grundsätzlich habe ich die Zeile old_passwords = 1 in meiner Datei my.cnf auskommentiert, mysql neu gestartet, den Benutzer hinzugefügt / geändert, der schließlich den 16-Byte-Hash erhalten hat. Dann bin ich zurückgegangen und habe die Zeile old_passwords = 1 auskommentiert und mysql neu gestartet. Also im Grunde genommen:

  • Kommentar old_passwords = 1
  • Starten Sie MySQL neu
  • Benutzer hinzufügen / ändern
  • unkommentieren old_passwords = 1
  • Starten Sie MySQL neu

Da haben Sie es also: 1 Benutzer, der einen neuen Kennworttyp verwendet, während andere Benutzer ihre alten Kennworttypen verwenden. Und jeder kann sich einloggen! ;)

petru
quelle
1

Dies kann häufig vorkommen, wenn Ihr MYSQL-Server einen alten Kennwort-Hash verwendet , das Kennwort ändert oder den Server aktualisiert, um den neuesten Kennwort-Hash zu erhalten, mit dem das Authentifizierungsproblem behoben wird.

Clain Dsilva
quelle
1
Ich habe gerade das Passwort des Datenbankbenutzers erneut geändert, vorausgesetzt, MySql würde den neuen Hash verwenden. Es funktionierte. Es waren keine weiteren Änderungen erforderlich.
eyal_katz
0

Beim Versuch, meine MediaWiki-Installation zu aktualisieren, wurde eine ähnliche Meldung angezeigt. Ich verwende Netfirms als Hosting-Anbieter und habe dieses Problem gelöst, indem ich mich in der Systemsteuerung angemeldet, den MySQL-Bereich aufgerufen und die von mediawiki verwendete Datenbank geändert habe. Ich konnte dann mit dem MediaWiki-Upgrade fortfahren.

jedi34567
quelle