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

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
Linda Hamiltonoriginal
2024-10-31 05:53:30336parcourir

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>

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>

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!

Déclaration:
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