ホームページ >データベース >mysql チュートリアル >Java を MySQL に接続するときに発生する「公開キーの取得は許可されていません」という例外を解決するにはどうすればよいですか?

Java を MySQL に接続するときに発生する「公開キーの取得は許可されていません」という例外を解決するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-31 05:53:30415ブラウズ

How to Resolve the

接続 Java - MySQL: 「公開キーの取得は許可されていません」例外の解決

使用して MySQL データベースへの接続を確立しようとしたときJava および 8.0.11 コネクタでは、次の例外が発生する可能性があります:

<code class="java">Exception in thread "main" java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed</code>

解決策:

この例外は、クライアントがパブリック ファイルを取得しようとしていることを示します。サーバーからキーを取得しますが、公開キーの取得は許可されていません。この問題を解決するには、MySQL 接続文字列にallowPublicKeyRetrieval=true オプションを追加して、公開キーの取得を明示的に許可する必要があります。

変更された接続マネージャー クラス:

<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>

allowPublicKeyRetrieval を true に設定すると、クライアントはサーバーから公開キーを要求することが許可されます。これにより、「公開キーの取得は許可されていません」例外が解決されます。

追加の考慮事項:

  • 公開キーの取得を有効にすると、セキュリティ リスクが生じる可能性があります。テストまたは開発後に無効にすることを検討してください。
  • あるいは、開発目的のみ useSSL=false を設定します。 SSL 暗号化が無効になるため、運用環境ではこれを使用しないでください。

以上がJava を MySQL に接続するときに発生する「公開キーの取得は許可されていません」という例外を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。