MySQL : résoudre l'erreur Authentication plugin 'caching_sha2_password' cannot be loaded
Depuis la version 8.0, Mysql a changé le mode de chiffrement de la connexion au serveur et demande un plugin spécifique pour identifier un utilisateur.
Lorsque vous vous connectez à Mysql avec le logiciel Mysql Workbench, le message d'erreur " Authentication plugin 'caching_sha2_password' cannot be loaded" peut s'afficher. Cette erreur se produit car, depuis la version 8.0, Mysql a changé le mode de chiffrement de la connexion au serveur et demande un plugin spécifique pour identifier un utilisateur. Différentes solutions permettent de revenir au mode de chiffrement natif (autre astuce Comment importer un fichier SQL dans MySQL en ligne de commande ?).
Il existe une commande SQL pour changer la méthode de chiffrement de l'utilisateur, quel que soit le système que vous utilisez. Vous devez pour cela vous connecter en tant que root au serveur Mysql avec l'interface en ligne de commande.
ALTER USER 'utilisateur'@'adresse_ip_du_serveur' IDENTIFIED WITH mysql_native_password BY 'mot_de_passe';
Vous pouvez également modifier directement la configuration du serveur Mysql. Si vous travaillez avec un Mac, rendez-vous dans les préférences système et allez dans le menu "Mysql". Cliquez ensuite sur le bouton "Initialize Database". Tapez votre nouveau mot de passe et choisissez l'option "Use legacy password". Redémarrez le serveur et vous pourrez vous reconnecter avec Mysql Workbench.
Si vous travaillez avec Windows ou Linux, il est possible de changer les paramètres du serveur Mysql en modifiant directement le fichier de configuration. Sous Windows, le fichier se nomme "my.ini" alors que sous Linux il s'agit du fichier "my.cnf". Modifiez le paramètre "default_authentication_plugin" en lui indiquant d'utiliser la méthode d'authentification native de Mysql :
default_authentication_plugin=mysql_native_password
Redémarrez ensuite le serveur. Si le message d'erreur apparaît toujours, alors vous devez créer un nouvel utilisateur. Voici la commande à utiliser en tant que root pour créer un utilisateur disposant de tous les privilèges :
GRANT ALL PRIVILEGES ON *.* TO 'utilisateur'@'adresse_ip_du_serveur' IDENTIFIED BY 'mot_de_passe';
Le mot de passe de nouvel utilisateur sera chiffré avec le système de chiffrement natif de Mysql et vous pourrez vous connecter avec Mysql Workbench.