Beim Versuch, ein Upgrade von PHP 7.3 auf PHP 7.4 durchzuführen, wurde folgende Fehlermeldung angezeigt:
Unerwartete Serverantwort beim Ausführen von caching_sha2 auth 109
Aus meiner Sicht bedeutet dies, dass PHP 7.4 MySQLi versucht, das caching_sha2_password
Plugin zu verwenden. Dieser Artikel weist darauf hin, dass PHP MySQLi das Plugin nicht unterstützt (es weist auch auf zukünftige Unterstützung hin), aber da PHP 7.4 neu ist und versucht, es zu verwenden, denke ich, dass es funktionieren sollte. Außerdem unterscheidet sich die Fehlermeldung von der, die nicht unterstützt wurde ( Zugriff verweigert vs. Authentifizierungsmethode unbekannt ).
Also habe ich mein MySQL-Authentifizierungs-Plugin geändert caching_sha2_password
(mit demselben Passwort wie zuvor):
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '';
FLUSH PRIVILEGES;
Dies verursachte jedoch einen weiteren Fehler:
Zugriff für Benutzer 'root' @ 'localhost' verweigert (mit Passwort: YES).
Zurückschalten auf PHP 7.3 und mysql_native_password
es funktioniert wieder.
Ich habe das gleiche Passwort für beide Plugins, die gleiche Website und die gleichen Änderungen an der php.ini verwendet. Ich habe jedoch keine mysqli
Konfiguration geändert . Die Protokolle für MySQL zeigen nichts an, das Apache2-Protokoll zeigt nur die Fehlermeldung "Zugriff verweigert" an.
Hat php7.4-mysqli Unterstützung für caching_sha2_password
? JA
Warum wird mein Passwort abgelehnt und wie kann ich es reparieren? Siehe meine Folgefrage
Auch wenn MySQLi das Plugin immer noch nicht unterstützt: Wie kann ich mysql_native_password
es verwenden?
Access Denied
und dann zu Ihnen zurückkehren.ALTER USER ... BY ''
. Als ich dasselbe versuchte, wurde ein leeres Passwort festgelegt.... BY '';
war nur die Shortend-Version, die ich tatsächlich eingegeben habe... BY 'mySecretPassword';
Access Denied
obwohl ich das Passwort buchstäblich kopiere. Mein PHP wurde tatsächlich einen Tag vor Ihrem erstellt:PHP 7.4.0 (cli) (built: Nov 28 2019 07:27:06) ( NTS )
Vielleicht ist es nur ein Fehler?Es gibt verschiedene Möglichkeiten, wie dies passieren kann
mysql_client
Authentifizierungsmethode. So hat es PHP nativ gemacht, indem es über die MySQL CLI-Schnittstelle eine Verbindung zu MySQL hergestellt hat. Der MySQL-eigene Client unterstützt immer seine eigenen Authentifizierungsmethoden.Sie verwenden MySQLND unter 7.4. Anscheinend war dies eine Verbesserung für den einheimischen Fahrer , die unangemeldet blieb
Es gibt noch einige mögliche Probleme damit.
quelle
mysql_native_password
undcaching_sha2_password
und nur die ersten Werke.mysqlnd
, was hier das Problem sein könnte, also werde ich wohl auf die volle Unterstützung warten.