it-swarm.com.de

php mysqli_connect: Dem Client unbekannte Authentifizierungsmethode [caching_sha2_password]

Ich benutze PHP mysqli_connect für die Anmeldung an einer MySQL-Datenbank (alle 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 table

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 (): Der Server hat eine Authentifizierungsmethode angefordert, die dem Client [caching_sha2_password] in ... unbekannt ist.

mit mysql_native_password in der MySQL Server-INI-Datei ist es möglich, sich mit user1 anzumelden, aber mit user2 den gleichen Fehler;


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

47
Guti_Haz

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

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

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

20
abeyaz

Ich löse das per SQL Befehl:

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

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

wenn Sie einen neuen Benutzer anlegen

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

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

das funktioniert bei mir

105
黃皓哲
ALTER USER 'mysqlUsername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysqlUsernamePassword';

Entfernen Sie Anführungszeichen (') nach ALTER USER und behalten Sie Anführungszeichen (') nach mysql_native_password BY bei

Es funktioniert auch für mich.

11
Eranda Jayamaha

Wenn Sie unter Windows arbeiten und caching_sha2_password überhaupt nicht verwenden können, haben Sie folgende Möglichkeiten:

  1. führen Sie den MySQL-Installer 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 "Starke Kennwortverschlüsselung zur Authentifizierung verwenden (EMPFOHLEN)" in "Legacy-Authentifizierungsmethode verwenden (MySQL 5.X-Kompatibilität beibehalten)".
  5. weiter klicken"
  6. geben Sie unter Accounts and Roles Ihr Root-Account-Passwort ein und klicken Sie auf "Check".
  7. weiter klicken"
  8. klicken Sie so oft auf "Weiter", bis Sie zu "Konfiguration übernehmen" gelangen.
  9. klicken Sie auf "Ausführen"

Das Installationsprogramm nimmt alle Konfigurationsänderungen vor, die für Sie erforderlich sind.

8
CJ Dennis

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

2
JRonald Moreno

Es funktioniert für mich (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 [email protected]'%' IDENTIFIED WITH mysql_native_password BY 'password';
1
Chinnon Santos