php mysqli_connect: Authentifizierungsmethode dem Client unbekannt [caching_sha2_password]

Lesezeit: 6 Minuten

php mysqli connect Authentifizierungsmethode dem Client unbekannt caching sha2 password
Guti_Haz

Ich verwende php mysqli_connect zum Login in eine MySQL-Datenbank (alles auf localhost)

<?php
//DEFINE ('DB_USER', 'user2');
//DEFINE ('DB_PASSWORD', 'pass2');
DEFINE ('DB_USER', 'user1');
DEFINE ('DB_PASSWORD', 'pass1');
DEFINE ('DB_HOST', '127.0.0.1');
DEFINE ('DB_NAME', 'dbname');

$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

if(!$dbc){
    die('error connecting to database');    
}
?>

dies ist die mysql.user-Tabelle:
mysql.user-Tabelle

MySQL-Server-INI-Datei:

[mysqld]
# The default authentication plugin to be used when connecting to the server
default_authentication_plugin=caching_sha2_password
#default_authentication_plugin=mysql_native_password

mit caching_sha2_password in der MySQL-Server-INI-Datei ist es überhaupt nicht möglich, sich mit Benutzer1 oder Benutzer2 anzumelden;

Fehler: mysqli_connect(): Die vom Server angeforderte Authentifizierungsmethode ist dem Client unbekannt [caching_sha2_password] in…

mit mysql_native_password in der MySQL-Server-INI-Datei ist es möglich, sich mit Benutzer1 anzumelden, aber mit Benutzer2, derselbe Fehler;


wie kann ich mich mit anmelden caching_sha2_password auf dem mySql-Server?

  • Unterstützt PDO dies? Ich habe andere Berichte darüber gesehen mysqli.

    – Tadman

    25. April 2018 um 16:34 Uhr

  • Die von @黃皓哲 gepostete Antwort sollte als akzeptierte Antwort markiert werden.

    – FIL

    4. Februar 2019 um 9:26 Uhr


  • Von der Terminalanmeldung zu mysql mit diesem Befehl: mysql -u root -p Geben Sie dann das Root-Passwort ein und fügen Sie dann den folgenden Befehl ein ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘root’;

    – Benutzer3512810

    26. März 2021 um 11:52 Uhr

Ich löse das per SQL-Befehl:

ALTER USER 'mysqlUsername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysqlUsernamePassword';

auf die verwiesen wird https://dev.mysql.com/doc/refman/8.0/en/alter-user.html

wenn Sie einen neuen Benutzer erstellen

 CREATE USER 'jeffrey'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

auf die verwiesen wird https://dev.mysql.com/doc/refman/8.0/en/create-user.html

das funktioniert bei mir

  • Gute Antwort. Das Problem dabei ist, dass Sie dies möglicherweise jedes Mal tun müssen, wenn Sie einen neuen Benutzer hinzufügen, abhängig von den Servereinstellungen

    – Machatität

    28. Juni 2018 um 14:18 Uhr

  • Vielen Dank, ich habe nach einer Möglichkeit gesucht, die neuen Passwort-Hashes in die älteren zu konvertieren (wie das Format user2 in das Format user1 in der Frage), und Ihre Antwort hat genau den Job gemacht

    – Buchhalter م

    25. Juli 2018 um 18:29 Uhr


  • Und so endete ein 4-tägiger Kampf, um php-7.2.9/11 dazu zu bringen, gut mit MySQL-8.012 zu spielen. Könnte jemand im PHP-Team davon überzeugt werden, dies in INSTALL im Tarball zu vermerken? Es würde Tausende von Personenstunden in den nächsten ein oder zwei Jahren einsparen.

    – Bergmann

    12. Oktober 2018 um 16:27 Uhr

  • @MountainMan Hat mir das Leben gerettet

    – Liang

    18. November 2018 um 7:31 Uhr

  • Dies sollte als Workaround-Lösung akzeptiert werden

    – Yohanim

    29. Januar 2019 um 17:24 Uhr

1646946848 359 php mysqli connect Authentifizierungsmethode dem Client unbekannt caching sha2 password
abeyaz

Ab PHP 7.4 ist dies kein Problem mehr. Unterstützung für caching_sha2 Authentifizierungsmethode wurde zu mysqlnd hinzugefügt.


Derzeit unterstützt die PHP-Mysqli-Erweiterung die neue Caching_sha2-Authentifizierungsfunktion nicht. Sie müssen warten, bis sie ein Update veröffentlichen.

Überprüfen Sie den zugehörigen Beitrag von MySQL-Entwicklern: https://mysqlserverteam.com/upgrading-to-mysql-8-0-default-authentication-plugin-considerations/

Sie haben PDO nicht erwähnt, vielleicht sollten Sie versuchen, sich mit PDO zu verbinden.

  • PDO hat das gleiche Problem

    – Machatität

    18. Juni 2019 um 15:06 Uhr

  • @gen Basierend auf dieser Fehlersieht so aus, als ob es ab 7.4.2 funktioniert

    – Machatität

    22. März 2020 um 0:58 Uhr

  • Ein Upgrade auf php7.4 hat das Problem gelöst. Und ich denke, das ist der beste Ansatz, anstatt die Authentifizierungsmethode zu ändern mysql_native_password wie einige Antworten vermuten lassen.

    – ultrasamad

    21. Juni 2020 um 17:00 Uhr

  • Ich verwende Docker (Apache + PHP in einem Container und MySQL in einem anderen Container) und dies hat mein Problem gelöst. Danke!

    – Joan Galmés Riera

    1. November 2020 um 11:03 Uhr

  • PHP 7.4.3 hier. Musste umsteigen mysql_native_password damit es funktioniert.

    – RaminS

    28. Juli 2021 um 0:56 Uhr

1646946848 750 php mysqli connect Authentifizierungsmethode dem Client unbekannt caching sha2 password
Eranda J.

ALTER USER 'mysqlUsername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysqlUsernamePassword';

Anführungszeichen (‘) danach entfernen ALTER USER und behalte das Anführungszeichen (‘) danach mysql_native_password BY

Bei mir funktioniert es auch.

  • Das war die einzige Lösung, die für mich auf dem Localhost-Server mit dem WAMP-Server funktioniert hat 🙂

    – Jodyshop

    23. Februar 2020 um 19:23 Uhr

  • Dies schien das Problem im Homebrew LAMP-Setup meines Mac zu beheben. Hatte dieses Problem jedoch nicht unter Debian.

    – Magnus

    23. Februar 2020 um 22:07 Uhr

  • Für die reinen Anfänger, 1) cd /usr/local/mysql/bin 2) ./mysql -u root -p 3) Geben Sie die Codezeile in diesem Beitrag ein

    – Jason

    26. Februar 2021 um 1:10 Uhr

Wenn Sie Windows verwenden und es nicht verwendet werden kann caching_sha2_password überhaupt kannst du folgendes tun:

  1. Führen Sie das MySQL-Installationsprogramm erneut aus
  2. Wählen Sie “Neu konfigurieren” neben MySQL Server (das oberste Element)
  3. Klicken Sie auf “Weiter”, bis Sie zu “Authentifizierungsmethode” gelangen.
  4. Ändern Sie “Verwenden Sie eine starke Passwortverschlüsselung für die Authentifizierung (EMPFOHLEN)” in “Verwenden Sie eine ältere Authentifizierungsmethode (Beibehaltung der MySQL 5.X-Kompatibilität)
  5. Weiter klicken”
  6. Geben Sie Ihr Root-Konto-Passwort in Konten und Rollen ein und klicken Sie auf „Überprüfen“.
  7. Weiter klicken”
  8. Klicken Sie weiter auf „Weiter“, bis Sie zu „Konfiguration übernehmen“ gelangen.
  9. Klicken Sie auf “Ausführen”

Das Installationsprogramm nimmt alle erforderlichen Konfigurationsänderungen für Sie vor.

Wie viele viele Menschen hatte ich das gleiche Problem. Obwohl der Benutzer auf die Verwendung von mysql_native_password eingestellt ist und ich eine Verbindung über die Befehlszeile herstellen kann, besteht die einzige Möglichkeit, mysqli() zum Verbinden zu bringen, darin, hinzuzufügen

default-authentication-plugin=mysql_native_password

zum [mysqld] Abschnitt von, in meinem Setup auf Ubuntu 19.10, /etc/mysql/mysql.conf.d/mysqld.cnf

  • Denken Sie auch daran, dass es nicht funktioniert, wenn der Benutzer vor dieser Änderung erstellt wurde. Sie sollten also ZUERST die Standard-Authentifizierung in der Konfiguration festlegen und dann den Benutzer erstellen, um zu arbeiten!

    – Oleg Popov

    22. November 2019 um 7:21 Uhr

  • Dies funktionierte unter Ubuntu 20.04 mit MySQL 8.0 und PHP 5.6. Beachten Sie, dass Sie die Tabellen auch dafür auf INNODB setzen müssen

    – rubo77

    19. April 2021 um 7:30 Uhr

  • Nachdem ich dies zur Konfiguration hinzugefügt habe, erhalte ich den gleichen Fehler

    – Igor

    28. Januar um 8:52 Uhr

1646946849 446 php mysqli connect Authentifizierungsmethode dem Client unbekannt caching sha2 password
weegee

Bei mir funktioniert es (PHP 5.6 + PDO / MySQL Server 8.0 / Windows 7 64bit)

Bearbeiten Sie die Datei C:\ProgramData\MySQL\MySQL Server 8.0\my.ini:

default_authentication_plugin=mysql_native_password

Setzen Sie den MySQL-Dienst unter Windows und in der MySQL-Shell zurück …

ALTER USER my_user@'%' IDENTIFIED WITH mysql_native_password BY 'password';

  • Denken Sie auch daran, dass es nicht funktioniert, wenn der Benutzer vor dieser Änderung erstellt wurde. Sie sollten also ZUERST die Standard-Authentifizierung in der Konfiguration festlegen und dann den Benutzer erstellen, um zu arbeiten!

    – Oleg Popov

    22. November 2019 um 7:21 Uhr

  • Dies funktionierte unter Ubuntu 20.04 mit MySQL 8.0 und PHP 5.6. Beachten Sie, dass Sie die Tabellen auch dafür auf INNODB setzen müssen

    – rubo77

    19. April 2021 um 7:30 Uhr

  • Nachdem ich dies zur Konfiguration hinzugefügt habe, erhalte ich den gleichen Fehler

    – Igor

    28. Januar um 8:52 Uhr

php mysqli connect Authentifizierungsmethode dem Client unbekannt caching sha2 password
Syed Ekram Uddin

Ich habe den folgenden Befehl ausgeführt
ALTER USER 'root' @ 'localhost' identified with mysql_native_password BY 'root123'; in der Befehlszeile und starten Sie schließlich MySQL in den lokalen Diensten neu.

  • keine Leerzeichen hier 'root' @ 'localhost' sollte stattdessen gelesen werden ALTER USER 'root'@'localhost' identified with mysql_native_password BY 'root123';

    – d1jhoni1b

    12. August 2020 um 6:28 Uhr


989010cookie-checkphp mysqli_connect: Authentifizierungsmethode dem Client unbekannt [caching_sha2_password]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy