MySQL 8.0 utilise un nouveau plugin d'authentification par défaut - caching_sha2_password - alors que MySQL 5.7 en utilisait un autre - mysql_native_password . Actuellement, les pilotes Node.js de la communauté pour MySQL ne prennent pas en charge les mécanismes d'authentification côté client compatibles pour le nouveau plug-in de serveur.
Une solution de contournement possible consiste à modifier le type de compte utilisateur pour utiliser l'ancien plug-in d'authentification :
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'MyNewPass';
Ou créez-en un autre qui utilise le même plugin :
CREATE USER 'foo'@'localhost' IDENTIFIED WITH mysql_native_password BY 'bar';
Il y a une pull request en préparation pour résoudre correctement le problème.
Une autre option consiste à utiliser le officiel Connecteur MySQL Node.js (divulgation complète :je suis le développeur principal), qui est basé sur le Protocole X et prend déjà en charge le nouveau mode d'authentification.