Lorsque vous tentez d'établir une connexion à une base de données à l'aide de mysqli_connect, vous pouvez rencontrer une erreur indiquant " Le serveur a demandé une méthode d'authentification inconnue du client [caching_sha2_password]." Cette erreur résulte d'une incompatibilité entre la méthode d'authentification configurée sur le serveur MySQL et la méthode prise en charge par votre code PHP.
Plus précisément, le fichier ini du serveur MySQL définit default_authentication_plugin sur caching_sha2_password. Ce plugin offre une sécurité renforcée mais nécessite la prise en charge du client pour cette méthode. Cependant, votre code PHP utilise le mécanisme d'authentification par mot de passe natif MySQL par défaut, qui n'est pas compatible avec caching_sha2_password.
Pour résoudre ce problème, vous avez deux options :
Vous pouvez modifier le default_authentication_plugin dans le fichier ini du serveur MySQL en mysql_native_password. Cela permettra à votre code PHP de se connecter à l'aide de la méthode d'authentification par mot de passe native.
Vous pouvez également spécifier la méthode d'authentification dans votre code PHP pour qu'elle corresponde la configuration du serveur. Cela peut être fait en utilisant la fonction mysqli_options() avant d'appeler mysqli_connect().
mysqli_options(mysqli, MYSQLI_OPT_AUTH_PLUGIN, 'caching_sha2_password');
Si aucune des options ci-dessus ne résout le problème, vous devrez peut-être modifier la méthode d'authentification pour l'utilisateur spécifique qui tente de se connecter. Cela peut être fait à l'aide de la commande SQL suivante :
ALTER USER 'username'@'hostname' IDENTIFIED WITH mysql_native_password BY 'new_password';
En implémentant ces solutions, vous pouvez réussir à établir une connexion à MySQL à l'aide de mysqli_connect malgré la méthode d'authentification par défaut définie sur le serveur.
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!