ホームページ >データベース >mysql チュートリアル >Java アプリケーションが MySQL に接続するときに「公開キーの取得は許可されていません」という例外をスローするのはなぜですか?

Java アプリケーションが MySQL に接続するときに「公開キーの取得は許可されていません」という例外をスローするのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-01 09:08:30446ブラウズ

Why Does My Java Application Throw a

接続 Java - MySQL: 「公開キーの取得は許可されていません」例外のトラブルシューティング

MySQL データベースへの接続を確立しようとしたときJava コネクタ 8.0.11 を使用すると、開発者は「公開キーの取得は許可されていません」という例外が発生する可能性があります。このエラーは接続ハンドシェイク プロセス中に発生し、クライアント (Java アプリケーション) が認証のためにサーバーから公開キーを取得する権限を持っていないことを示します。

例外の原因

Java アプリケーションが、ユーザーのパスワードなどの機密情報を暗号化して送信するために使用されるサーバーの公開キーを取得しようとすると、例外が発生します。デフォルトでは、MySQL は中間者 (MITM) 攻撃の可能性を防ぐために公開キーの取得を禁止しています。

解決策

この問題を解決するには、Java アプリケーションデータベース接続を確立するときに公開キーの取得を許可するように明示的に構成する必要があります。これは、JDBC 接続文字列の一部として、allowPublicKeyRetrieval=true パラメータを指定することで実現できます。

allowPublicKeyRetrieval パラメータを含む JDBC 接続文字列の例を次に示します。

jdbc:mysql://localhost:3306/db?allowPublicKeyRetrieval=true

次の点に注意してください。公開キーの取得を有効にすると、接続が安全なチャネル (HTTPS など) を介していない場合、クライアントが MITM 攻撃を受けやすくなり、潜在的なセキュリティ リスクが生じます。開発およびテストの目的では、SSL を無効にし、接続文字列で useSSL=false を明示的に指定する方が安全な場合があります。

jdbc:mysql://localhost:3306/db?allowPublicKeyRetrieval=true&useSSL=false

追加のヒント

問題が発生した場合allowPublicKeyRetrieval=true を指定しても問題が解決しない場合は、次の追加措置を試してください:

  • MySQL サーバーの SSL/TLS 構成が適切に構成されていることを確認します。
  • Java アプリケーションが最新のバージョンを使用していることを確認します。 MySQL JDBC コネクタのバージョンを確認します。
  • ネットワーク関連のブロックを排除するには、ファイアウォールを (一時的に) 無効にします。
  • MySQL サービスを再起動して、正常な接続が確立されるようにします。

以上がJava アプリケーションが MySQL に接続するときに「公開キーの取得は許可されていません」という例外をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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