Comment corriger l'erreur not support authentication protocol requested by server, consider upgrading MySQL client ?

La version 8 de MySQL a apporté de nombreuses modifications au système de gestion de bases de données. Le système d'authentification a été davantage sécurisé, ce qui peut occasionner des soucis de comptabilité avec des clients qui n'ont pas été mis à jour. Ce message d'erreur "not support authentication protocol requested by server, consider upgrading MySQL client" est celui correspondant à ce problème de compatibilité.

La version 8 de MySQL utilise une nouvelle méthode d'authentification, "caching_sha2_password". La connexion est beaucoup plus sécurisée, mais tous les clients ne gèrent pas encore ce système. C'est par exemple le cas de la librairie mysqljs que l'on peut notamment utiliser sur les serveurs NodeJS. Si vous n'avez pas d'autre solution pour remplacer la librairie que vous utilisez, il est toujours possible de revenir à l'ancien système d'authentification, "mysql_native_password". Vous devez pour cela vous connecter au serveur MySQL en tant qu'utilisateur root et exécuter la requête suivante :

ALTER USER 'utilisateur'@'serveur' IDENTIFIED WITH mysql_native_password BY 'motDePasse',

Cette requête va modifier le système d'authentification pour revenir à l'ancienne méthode pour l'utilisateur concerné. N'oubliez pas de recharger la table qui stocke les droits dans MySQL avec cette requête :

FLUSH PRIVILEGES,

Il est cependant conseillé de conserver cette méthode si vous le pouvez, car elle apporte une sécurité renforcée avec un meilleur cryptage du mot de passe. Les chances de piratage sont ainsi réduites. Dans le cas de NodeJS, la librairie MySQL X DevAPI for Node prend en charge la nouvelle méthode d'authentification. C'est à vous qu'il revient de peser le pour et le contre, car il va peut-être falloir modifier des morceaux de code pour s'adapter à la nouvelle librairie. Par exemple, la librairie MySQL X DevAPI ne prend pas en charge le langage TypeScript, ce qui peut donc nécessiter de changer ici de langage.