J'utilise php mysqli_connect
pour me connecter à la base de données MySQL (le tout sur localhost)
<?php //DEFINE ('DB_USER', 'user2'); //DEFINE ('DB_PASSWORD', 'pass2'); DEFINE ('DB_USER', 'user1'); DEFINE ('DB_PASSWORD', 'pass1'); DEFINE ('DB_HOST', '127.0.0.1'); DEFINE ('DB_NAME', 'dbname'); $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); if(!$dbc){ die('error connecting to database'); } ?>
Voici la table mysql.user :
Fichier ini du serveur MySQL :
[mysqld] # The default authentication plugin to be used when connecting to the server default_authentication_plugin=caching_sha2_password #default_authentication_plugin=mysql_native_password
En utilisant caching_sha2_password
dans le fichier ini du serveur MySQL, il est impossible de se connecter avec l'utilisateur1 ou l'utilisateur2
Erreur : mysqli_connect() : client demandé par le serveur [caching_sha2_password] Méthode d'authentification inconnue...
En utilisant mysql_native_password
dans le fichier ini du serveur MySQL, vous pouvez vous connecter avec l'utilisateur1, mais la même erreur se produit avec l'utilisateur2 ;
login sur le serveur mySql ? caching_sha2_password
J'ai résolu ce problème via la commande SQL :
Référencé par https://dev.mysql. com/doc/refman/8.0/en/alter-user.html
Si vous créez un nouvel utilisateur
Référencé par https://dev.mysql. com/doc/refman/8.0/en/create-user.html
Cela a fonctionné pour moi
À partir de PHP 7.4, ce n'est plus un problème. mysqlnd a ajouté la prise en charge de la méthode d'authentification
caching_sha2
.Actuellement, la nouvelle fonctionnalité d'authentification caching_sha2 n'est pas prise en charge par l'extension PHP mysqli. Vous devrez attendre qu'ils publient une mise à jour.
Affichez les articles connexes des développeurs MySQL : https://mysqlserverteam.com/upgrading-to-mysql-8-0-default-authentication-plugin-considerations/
Ils n'ont pas mentionné PDO, vous devriez peut-être essayer d'utiliser la connexion PDO.