Maison > base de données > tutoriel mysql > le corps du texte

Comment résoudre l'exception « La récupération de clé publique n'est pas autorisée » lors de la connexion de Java à MySQL ?

Linda Hamilton
Libérer: 2024-10-31 05:53:30
original
335 Les gens l'ont consulté

How to Resolve the

Connexion Java - MySQL : résolution 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 à l'aide Java et le connecteur 8.0.11, les utilisateurs peuvent rencontrer l'exception suivante :

<code class="java">Exception in thread "main" java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed</code>
Copier après la connexion

Solution :

Cette exception indique que le client tente de récupérer le public clé du serveur, mais la récupération de la clé publique n'est pas autorisée. Pour résoudre ce problème, nous devons autoriser explicitement la récupération de clé publique en ajoutant l'option allowPublicKeyRetrieval=true à la chaîne de connexion MySQL.

Classe de gestionnaire de connexion modifiée :

<code class="java">public static Connection getConnection() throws SQLException {
    
    MysqlDataSource dataSource = new MysqlDataSource();
    
    dataSource.setUseSSL( false );
    dataSource.setServerTimezone( serverTimeZone );
    dataSource.setServerName( serverName );
    dataSource.setDatabaseName( databaseName );
    dataSource.setPortNumber( portNumber );
    dataSource.setUser( user );
    dataSource.setPassword( password );
    
    // Allow public key retrieval
    dataSource.setAllowPublicKeyRetrieval( true );
    
    return dataSource.getConnection();
}</code>
Copier après la connexion

En définissant AllowPublicKeyRetrieval sur true, le client est autorisé à demander la clé publique au serveur. Cela résout l'exception « La récupération de clé publique n'est pas autorisée ».

Considérations supplémentaires :

  • L'activation de la récupération de clé publique peut exposer des risques de sécurité. Pensez à le désactiver après le test ou le développement.
  • Vous pouvez également définir useSSL=false à des fins de développement uniquement. Ne l'utilisez pas dans des environnements de production car cela désactive le cryptage SSL.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!