Maison > Article > base de données > Pourquoi est-ce que j'obtiens des erreurs « ER_NOT_SUPPORTED_AUTH_MODE » lors de la connexion à MySQL à partir de Node.js ?
L'erreur "ER_NOT_SUPPORTED_AUTH_MODE" indique que le client Node.js ne peut pas établir de connexion avec le serveur MySQL en raison d'un protocole d'authentification non pris en charge. Ce problème survient lorsque le serveur MySQL nécessite une méthode d'authentification spécifique que le client ne prend pas en charge.
Dans votre cas, vous avez effectué une mise à niveau de MariaDB vers MySQL. Cependant, l'extrait de connexion JavaScript que vous utilisez utilise peut-être toujours le protocole d'authentification MariaDB, qui n'est pas pris en charge par MySQL 8.0 et supérieur.
Solution :
Pour résoudre Pour résoudre ce problème, vous devez mettre à niveau votre client Node.js pour prendre en charge le protocole d'authentification natif MySQL. Ce protocole est compatible avec les serveurs MariaDB et MySQL.
Pour MySQL version 8.0 et supérieure, utilisez la commande suivante pour mettre à jour la méthode d'authentification de l'utilisateur root :
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Remplacez "root" par le nom d'utilisateur et le "mot de passe" avec le mot de passe souhaité.
Une fois la méthode d'authentification mise à jour, exécutez la commande suivante pour activer les modifications :
FLUSH PRIVILEGES;
Maintenant, modifiez votre extrait de connexion JavaScript pour utiliser le protocole natif MySQL :
var mysql = require('mysql'); var connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'password', database: 'foobarDb', authPlugin: 'mysql_native_password' // specify the MySQL native authentication protocol });
Cela devrait résoudre l'erreur "ER_NOT_SUPPORTED_AUTH_MODE" et vous permettre de vous connecter à la base de données MySQL depuis votre serveur Node.js.
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!