Heim >Datenbank >MySQL-Tutorial >So beheben Sie den Fehler „mysql_native_password nicht geladen' unter MySQL 8.4
Eine der wichtigsten Änderungen, die in MySQL 8.4 (dem neuesten LTS) eingeführt wurden Version ab 2024) ist, dass das Plugin „MySQL Native Password“ nein ist länger standardmäßig aktiviert. Darüber hinaus entfernt MySQL 9.0 dieses Plugin vollständig.
Diese Änderung betrifft PHP und andere Anwendungen, die die MySQL-Datenbank mit dem Authentifizierungs-Plugin mysql_native_password verwenden. Da das mysql_native_password-Plugin standardmäßig nicht mehr geladen wird oder überhaupt nicht verfügbar ist, schlagen PHP-PDO/MySQLi-Verbindungen fehl.
Beim Versuch, mit dem nicht mehr geladenen mysql_native_password-Plugin eine Verbindung zur Datenbank herzustellen, löst PDO/MySQLi einen Fehler aus Der von zurückgegebene Fehler MySQL:
PDO:
SQLSTATE[HY000] [1524] Plugin 'mysql_native_password' is not loaded
MySQLi:
mysqli_sql_exception Plugin 'mysql_native_password' is not loaded.
Auf MySQL 8.0.34 bis 8.3 führte die Verwendung des mysql_native_password-Plugins zu Warnungen im MySQL-Fehler protokolliert log:
[Warning] [MY-013360] [Server] Plugin mysql_native_password reported: ''mysql_native_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead'
MySQL 8.4 nimmt die Änderung vor, das mysql_native_password-Plugin nicht mehr zu laden, was zu den oben gezeigten Fehlern führt. Unter MySQL 9.0 wird das mysql_native_password-Plugin vollständig entfernt, was ebenfalls zu den gleichen Fehlern führt.
PHP unterstützt seit PHP 7.4 die Caching_sha2_password-Authentifizierung. Um diesen Fehler zu beheben, ändern Sie das Authentifizierungs-Plugin des MySQL-Benutzers in caching_sha2_password.
Führen Sie auf einer MySQL-Konsole Folgendes aus, um Benutzer aufzulisten, die das veraltete Authentifizierungs-Plugin verwenden:
SELECT user, host, plugin from mysql.user WHERE plugin='mysql_native_password';
Durch Ausführen des obigen Befehls sollten alle Benutzer aufgelistet werden, die das verwenden mysql_native_password-Plugin:
Führen Sie auf einer MySQL-Konsole mit ausreichenden Berechtigungen den folgenden Befehl für jeden Benutzer aus, der das mysql_native_password-Plugin verwendet:
ALTER USER ''@'' IDENTIFIED WITH caching_sha2_password BY '';
Nach der Authentifizierung Wenn das Plugin aktualisiert wird, können PHP und andere Anwendungen über das Plugin „caching_sha2_password“ eine Verbindung zur Datenbank herstellen.
Obwohl MySQL 8.4 das Plugin „mysql_native_password“ nicht mehr aktiviert Standardmäßig ist es weiterhin möglich, dieses Plugin zu aktivieren. Es wird nicht empfohlen, dies zu tun, es sei denn, auf der PHP-Anwendung wird PHP 7.3 oder eine ältere Version ausgeführt, in der sie das Plugin „caching_sha2_password“ nicht verwenden kann.
Um das Plugin „mysql_native_password“ zu aktivieren, fügen Sie Folgendes zum Abschnitt [mysqld] des hinzu MySQL-Konfigurationsdatei und starten Sie den MySQL-Serverdienst neu.
Auf Debian/Ubuntu-basierten Systemen befindet sich diese Datei in /etc/mysql/-Verzeichnis. Es wird empfohlen, hierfür eine neue Datei (z. B. mit dem Namen /etc/mysql/conf.d/enable-mysql-native-password.cnf) zu erstellen.
SQLSTATE[HY000] [1524] Plugin 'mysql_native_password' is not loaded
Beachten Sie, dass das Plugin mysql_native_password vorhanden ist entfernt MySQL 9.0, daher funktioniert das Hinzufügen der oben genannten Konfiguration nicht und kann es auch einen Konfigurationsfehler verursachen, da die mysql_native_password-Konfiguration unter MySQL 9.0 nicht mehr gültig ist.
Das obige ist der detaillierte Inhalt vonSo beheben Sie den Fehler „mysql_native_password nicht geladen' unter MySQL 8.4. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!