Maison >base de données >tutoriel mysql >Pourquoi mon application Java génère-t-elle une exception « La récupération de clé publique n'est pas autorisée » lors de la connexion à MySQL ?
Connexion Java - MySQL : Dépannage de l'exception « La récupération de clé publique n'est pas autorisée »
Lors de la tentative d'établissement d'une connexion à une base de données MySQL En utilisant le connecteur Java 8.0.11, les développeurs peuvent rencontrer l'exception « La récupération de clé publique n'est pas autorisée ». Cette erreur survient lors du processus d'établissement de liaison de connexion et signifie que le client (application Java) n'est pas autorisé à obtenir la clé publique du serveur pour l'authentification.
Cause d'exception
L'exception se produit lorsque l'application Java tente de récupérer la clé publique du serveur, qui est utilisée pour crypter et transmettre des informations sensibles comme le mot de passe de l'utilisateur. Par défaut, MySQL interdit la récupération de clé publique pour empêcher d'éventuelles attaques de l'homme du milieu (MITM).
Solution
Pour résoudre ce problème, l'application Java doit être explicitement configuré pour permettre la récupération de la clé publique lors de l'établissement de la connexion à la base de données. Ceci peut être réalisé en spécifiant le paramètreallowPublicKeyRetrieval=true dans le cadre de la chaîne de connexion JDBC.
Voici un exemple de chaîne de connexion JDBC qui inclut le paramètreallowPublicKeyRetrieval :
jdbc:mysql://localhost:3306/db?allowPublicKeyRetrieval=true
Notez que l'activation de la récupération de clé publique pose un risque de sécurité potentiel en rendant le client vulnérable aux attaques MITM si la connexion n'est pas effectuée via un canal sécurisé (par exemple, HTTPS). À des fins de développement et de test, il peut être plus sûr de désactiver SSL et de spécifier explicitement useSSL=false dans la chaîne de connexion :
jdbc:mysql://localhost:3306/db?allowPublicKeyRetrieval=true&useSSL=false
Conseils supplémentaires
Si le problème persiste malgré la spécification de allowPublicKeyRetrieval=true, essayez les mesures supplémentaires suivantes :
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!