J'utilise MySQL version 8 sur PHP 7.0.
Le message d'erreur suivant s'affiche lorsque j'essaie de me connecter à ma base de données à partir de PHP:
Erreur de connexion: SQLSTATE [HY000] [2054] La méthode d'authentification demandée par le serveur est inconnue du client.
PHP pourrait montrer cette erreur
Avertissement: mysqli_connect (): La méthode d'authentification demandée par le serveur est inconnue du client [mot de passe caching_sha2] dans D:\xampp\htdocs\reg\server.php à la ligne 10.
Comment puis-je résoudre ce problème?
@mohammed, cela est généralement attribué au plug-in d'authentification utilisé par votre base de données mysql.
Par défaut et pour une raison quelconque, le plugin mysql 8 par défaut est auth_socket. La plupart des applications s'attendent généralement à se connecter à votre base de données à l'aide d'un mot de passe .
Si vous n'avez pas encore changé votre plugin d'authentification par défaut mysql, vous pouvez le faire en:
1. Connectez-vous en tant que root à mysql
2. Exécutez cette commande sql:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password
BY 'password';
Remplacez 'mot de passe' par votre mot de passe root. Si votre application ne se connecte pas à votre base de données avec l'utilisateur root, remplacez l'utilisateur 'root' dans la commande ci-dessus par l'utilisateur utilisé par votre application.
Digital Ocean en explique un peu plus ici Installation de Mysql
Vous devez modifier les paramètres MySQL. Editez le fichier my.cnf et mettez ce paramètre dans la section mysqld:
[mysqld]
default_authentication_plugin= mysql_native_password
Puis lancez la commande suivante:
FLUSH PRIVILEGES;
La commande ci-dessus active les modifications du mécanisme d'authentification par défaut.
j'ai essayé beaucoup de façons, mais seulement cela fonctionne pour moi
merci pour solution de contournement
vérifiez votre **. env
MYSQL_VERSION=latest
puis tapez cette commande
$ docker-compose exec mysql bash
$ mysql -u root -p
(identifiez-vous en tant que root)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
ALTER USER 'default'@'%' IDENTIFIED WITH mysql_native_password BY 'secret';
puis allez sur phpmyadmin et connectez-vous en tant que:
espérons que cela aide
Aucune des réponses ici n'a fonctionné pour moi. Ce que je devais faire c'est:
Après cela fonctionne bien.
Face au même problème, je n’étais pas capable d’exécuter wordpress conteneur docker avec mysql version 8 car son mécanisme d’authentification par défaut est caching_sha2_password au lieu de mysql_native_password.
Afin de résoudre ce problème, nous devons réinitialiser le mécanisme d'authentification par défaut sur mysql_native_password.
Recherchez le fichier my.cnf dans votre installation mysql, généralement sur un ordinateur Linux à l'emplacement suivant:/etc/mysql
Editez le fichier my.cnf et ajoutez la ligne suivante juste sous la rubrique [mysqld]
default_authentication_plugin = mysql_native_password
Enregistrez le fichier puis connectez-vous à la ligne de commande mysql en utilisant l'utilisateur root
exécuter la commande FLUSH PRIVILEGES;
J'utilise Laravel Lumen pour créer une petite application.
Pour moi, c’est parce que le fichier DB_USERNAME n’était pas défini dans mon fichier .env.
DB_USERNAME=root
Cela a résolu mon problème.
Dans le fichier my.cnf, vérifiez ci-dessous 2 étapes.
vérifier cette valeur -
old_passwords = 0;
il devrait être 0.
vérifier cela aussi
[mysqld] default_authentication_plugin = mysql_native_password Une autre valeur à vérifier est de s'assurer que
La section [mysqld] devrait être comme ça.
preferences -> mysql -> initialize database -> use legacy password encryption(instead of strong) -> entered same password
en tant que mon fichier config.inc.php, a redémarré le serveur Apache et cela a fonctionné. J'étais toujours méfiant à ce sujet alors j'ai arrêté les serveurs Apache et MySQL et les ai redémarrés et maintenant cela fonctionne.