MySQLでNonTransientConnectionException:Public Key Retrieval is not allowedの対処方法

データベース
スポンサーリンク

Amazon EC2でデータベースを使っているプログラムがある時から動かなくなった。

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieval is not allowed

???

なんだろう。

スポンサーリンク

MySQLNonTransientConnectionException: Public Key Retrieval is not allowedの発生原因

MySQLにコマンドから接続すると、何らかの接続状態が出来るらしい。

その状態で、プログラムからMySQLに接続するのは問題がない。

 

ただし、システムを再起動後、MySQLにコマンド接続せずに、プログラムからMySQLに接続した場合、MySQLNonTransientConnectionExceptionが発生する。

プログラムからは接続できないよって言っているんだと思う。

 

Public Key Retrieval is not allowed の解決策

このあたりに解決策が書いてありました。

https://stackoverflow.com/questions/50379839/connection-java-mysql-public-key-retrieval-is-not-allowed

 

 

You should add client option to your mysql-connector allowPublicKeyRetrieval=true to allow the client to automatically request the public key from the server. Note that AllowPublicKeyRetrieval=True could allow a malicious proxy to perform a MITM attack to get the plaintext password, so it is False by default and must be explicitly enabled.

https://mysql-net.github.io/MySqlConnector/connection-options/

you could also try adding useSSL=false when you use it for testing/develop purposes

example:

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

 

 

なるほど、JDBCドライバのプロパティで「allowPublicKeyRetrieval」をtrue、「useSSL」をfalseにするとよいらしい。

具体的には、 データベース接続文字列に「allowPublicKeyRetrieval=true&useSSL=false」を追加します。

 

例として

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

 

データベース
スポンサーリンク
スポンサーリンク
うらしたをフォローする
スポンサーリンク
urashita.com 浦下.com (ウラシタドットコム)

コメント

タイトルとURLをコピーしました