MySQL Public Key Retrieval is not allowed


問題:

在使用MyBatis時,啟動報出該異常com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieval is not allowed

解決:

是在 jdbc url后添加allowPublicKeyRetrieval=true,比如:jdbc:mysql://localhost:3306/test?characterEncoding=utf8&allowPublicKeyRetrieval=true

原因:

在MySQL8.0中,caching_sha2_password是默認的身份驗證插件,如果用戶帳戶使用sha256_password身份驗證,則在傳輸過程中必須保護密碼。TLS是實現此目的的首選機制,但是如果不可用,則將使用RSA公鑰加密。要指定服務器的RSA公鑰,請使用ServerRSAPublicKeyFile連接字符串設置,或設置AllowPublicKeyRetrieval=True為允許客戶端自動從服務器請求公鑰。請注意,這AllowPublicKeyRetrieval=True 可能會允許惡意代理執行MITM攻擊以獲取純文本密碼,因此False默認情況下它必須被顯式啟用。所以MySQL5.x版本是沒有問題的。

有圖有真相:MySQL連接字符串選項


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM