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 ?

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 ?

Susan Sarandon
Libérer: 2024-11-01 09:08:30
original
448 Les gens l'ont consulté

Why Does My Java Application Throw a

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
Copier après la connexion

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
Copier après la connexion

Conseils supplémentaires

Si le problème persiste malgré la spécification de allowPublicKeyRetrieval=true, essayez les mesures supplémentaires suivantes :

  • Assurez-vous que la configuration SSL/TLS du serveur MySQL est correctement configurée.
  • Vérifiez que l'application Java utilise la dernière version version du connecteur MySQL JDBC.
  • Désactivez le pare-feu (temporairement) pour éliminer tout blocage lié au réseau.
  • Redémarrez le service MySQL pour garantir un établissement de connexion propre.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal