前言
在使用IntelliJ IDEA開發環境中連接MySQL數據庫時,可能會遇到“Public Key Retrieval is not allowed”這樣的錯誤提示,即使輸入的用戶名和密碼完全正確。本文將指導你如何解決這一問題,確保順利建立數據庫連接。
錯誤背景
這一問題通常發生在MySQL 8.0及更高版本中,尤其是當MySQL服務器配置了caching_sha2_password
作為默認身份驗證插件時。客戶端嘗試連接服務器并請求公鑰進行非SSL連接加密驗證,但由于服務器的安全策略阻止了這種行為,從而導致連接失敗。
解決方案
要解決此問題,可以通過調整數據庫連接設置來允許公鑰檢索,以下是兩種具體的解決方法:
方法1:修改連接字符串
如果你在項目代碼中直接管理數據庫連接,可以在JDBC連接URL中加入特定參數以允許公鑰檢索。示例連接字符串如下:
jdbc:mysql://your_database_host:port/your_database?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
注意新增的allowPublicKeyRetrieval=true
部分,它指示驅動程序允許從服務器獲取公鑰。
方法2:在IntelliJ IDEA中配置
對于通過IDEA圖形界面配置的數據源,可以按照以下步驟進行調整:
-
打開數據庫工具窗口:在IntelliJ IDEA頂部菜單中找到并點擊
View
>Tool Windows
>Database
。 -
編輯數據源:如果你已經設置了MySQL數據源,右擊它并選擇
Edit Data Source
;若尚未設置,則點擊+
添加新的數據源,并選擇MySQL
。 -
調整連接屬性:在數據源配置界面,滾動至
Properties
或Additional Properties
區域。 -
添加新屬性:點擊
+
按鈕添加一個新屬性,鍵名為allowPublicKeyRetrieval
,值設置為true
。 -
驗證并保存:確認其他連接設置(主機名、端口、用戶名、密碼等)無誤后,點擊應用并測試連接是否成功。
注意事項
- 安全性考量:雖然上述方法能解決連接問題,但允許公鑰檢索可能降低連接的安全性。在生產環境中,推薦使用SSL連接來增強數據傳輸的安全性。
- 長期解決方案:考慮與數據庫管理員討論,評估是否調整MySQL服務器的認證插件(例如,從
caching_sha2_password
切換到mysql_native_password
),但這一改動需謹慎處理,因為它涉及到數據庫安全策略。