ホームページ >データベース >mysql チュートリアル >Java アプリケーションが MySQL に接続するときに「公開キーの取得は許可されていません」という例外をスローするのはなぜですか?
接続 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 を指定しても問題が解決しない場合は、次の追加措置を試してください:
以上がJava アプリケーションが MySQL に接続するときに「公開キーの取得は許可されていません」という例外をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。