MySQL : comment éviter l'erreur Unable to load authentication plugin 'caching_sha2_password' ?

La version 8 de MySQL a changé son système d'authentification. Un nouvel algorithme, l'algorithme "sha2", est utilisé par défaut pour stocker le mot de passe. Cette modification a engendré quelques erreurs dans le code des développeurs, car il faut soit adapter l'application qui se connecte à la base de données, soit effectuer une modification dans la base de données directement. Le message d'erreur "Unable to load authentication plugin 'caching_sha2_password'" pour une application écrite en Java est justement lié à cette nouveauté.

Ce message d'erreur se produit si l'application ou le logiciel que vous développez essaie d'accéder à une base de données MySQL 8 en utilisant l'ancien système d'authentification. Si vous utilisez le gestionnaire de projet Maven, il suffit alors de changer la dépendance du paquet "mysql-connector-java", qui gère la connexion entre un logiciel écrit en Java et un serveur de base de données MySQL. Utilisez une version plus récente que la version 8 pour que l'authentification fonctionne de nouveau.


    mysql
    mysql-connector-java
    runtime
    8.0.13

Si vous utilisez le client universel DBeaver pour gérer votre base de données, vous devez alors changer le type de la base de données administrée. Pour les serveurs MySQL, la plateforme propose deux options différentes. L'option "MySQL" permet de se connecter à une base de données MySQL dont la version est comprise entre 4 et 8. L'option "MySQL 8+" permet de gérer une base de données MySQL 8 et plus récente. C'est cette option que vous devez sélectionner pour réussir votre connexion à la base de données.

Si vous ne pouvez pas modifier votre application ou logiciel, vous pouvez vous connecter à votre base de données et changer le système d'authentification utilisé par le compte auquel vous souhaitez vous connecter. Vous devez pour cela vous connecter en tant que root. Un terminal ou une invite de commande et les droits d'administration sont nécessaires. Utilisez ensuite la requête suivante pour revenir à l'ancien système d'authentification. N'oubliez pas ensuite la requête "FLUSH PRIVILEGES" afin de recharger la table des privilèges et pouvoir vous connecter avec votre application à la base de données.

ALTER USER 'utilisateur'@'localhost' IDENTIFIED WITH mysql_native_password BY 'motDePasse';

SQL