Maison >base de données >tutoriel mysql >Comment corriger les erreurs mysql_native_password non chargé sur MySQL 8.4
L'un des changements majeurs introduits dans MySQL 8.4 (le dernier LTS sortie à partir de 2024), c'est que le plugin "MySQL Native Password" n'est pas n'est plus activé par défaut. De plus, MySQL 9.0 supprime ce plugin complètement.
Ce changement affecte PHP et d'autres applications qui utilisent la base de données MySQL avec le plugin d'authentification mysql_native_password. Étant donné que le plugin mysql_native_password n'est plus chargé par défaut ou n'est pas disponible du tout, les connexions PHP PDO/MySQLi échouent.
Lors de la tentative de connexion à la base de données à l'aide du plugin mysql_native_password qui n'est plus chargé, PDO/MySQLi renvoie l'erreur renvoyée par MySQL :
PDO :
SQLSTATE[HY000] [1524] Plugin 'mysql_native_password' is not loaded
MySQLi :
mysqli_sql_exception Plugin 'mysql_native_password' is not loaded.
Sur MySQL 8.0.34 à 8.3, l'utilisation du plugin mysql_native_password entraînait avertissements consignés dans le journal des erreurs MySQL :
[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 apporte la modification pour ne plus charger le plugin mysql_native_password, ce qui entraîne les erreurs indiquées ci-dessus. Sur MySQL 9.0, le plugin mysql_native_password est complètement supprimé, ce qui entraîne également les mêmes erreurs.
PHP prend en charge l'authentification caching_sha2_password depuis PHP 7.4. Pour corriger cette erreur, remplacez le plugin d'authentification de l'utilisateur MySQL par caching_sha2_password.
Sur une console MySQL, exécutez la commande suivante pour répertorier les utilisateurs utilisant le plugin d'authentification obsolète :
SELECT user, host, plugin from mysql.user WHERE plugin='mysql_native_password';
L'exécution de la commande ci-dessus devrait répertorier tous les utilisateurs qui utilisent mysql_native_password plugin :
Sur une console MySQL avec les autorisations suffisantes, exécutez la commande suivante sur chaque utilisateur utilisant le plugin mysql_native_password :
ALTER USER ''@'' IDENTIFIED WITH caching_sha2_password BY '';
Une fois le plugin d'authentification mis à jour, PHP et d'autres applications pourront se connecter à la base de données via le plugin caching_sha2_password.
Bien que MySQL 8.4 n'active plus le plugin mysql_native_password par défaut, il est toujours possible d'activer ce plugin. Il n'est pas recommandé de le faire sauf si l'application PHP exécute PHP 7.3 ou des versions antérieures, où elle ne peut pas utiliser le plugin caching_sha2_password.
Pour activer le plugin mysql_native_password, ajoutez ce qui suit à la section [mysqld] du fichier Fichier de configuration MySQL et redémarrez le service du serveur MySQL.
Sur les systèmes basés sur Debian/Ubuntu, ce fichier se trouve dans /etc/mysql/ répertoire. Il est recommandé de créer un nouveau fichier (nommé /etc/mysql/conf.d/enable-mysql-native-password.cnf par exemple) pour cela.
SQLSTATE[HY000] [1524] Plugin 'mysql_native_password' is not loaded
Notez que le plugin mysql_native_password est retiré dans MySQL 9.0, donc l'ajout de la configuration ci-dessus ne fonctionne pas et peut provoquer une erreur de configuration car la configuration mysql_native_password n'est plus valide sur MySQL 9.0.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!