Heim > Datenbank > MySQL-Tutorial > So beheben Sie den Fehler „mysql_native_password nicht geladen' unter MySQL 8.4

So beheben Sie den Fehler „mysql_native_password nicht geladen' unter MySQL 8.4

PHP中文网
Freigeben: 2024-12-13 15:53:22
nach vorne
318 Leute haben es durchsucht

How to fix the SQLSTATE[HY000] [1524] Plugin mysql_native_password is not loaded errors caused in MySQL 8.4 no longer enabling the mysql_native_password plugin by default

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
Nach dem Login kopieren
Nach dem Login kopieren

MySQLi:

 mysqli_sql_exception  Plugin 'mysql_native_password' is not loaded.
Nach dem Login kopieren

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'
Nach dem Login kopieren

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.

MySQL-Benutzer mit mysql_native_password auflisten

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';
Nach dem Login kopieren

Durch Ausführen des obigen Befehls sollten alle Benutzer aufgelistet werden, die das verwenden mysql_native_password-Plugin:

MySQL 8.4 - users with mysql_native_password plugin

Mysql_native_password-Benutzer auf caching_sha2_password aktualisieren

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 dem Login kopieren

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.

MySQL Native Password Plugin erneut aktivieren

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
Nach dem Login kopieren
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.watch
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage