在MySQL連接中出現(xiàn)“Public Key Retrieval is not allowed”錯誤,通常是因為在使用安全套接字層(SSL)連接時遇到了問題。這是因為MySQL 8.0及以上版本對安全性要求更高,特別是在使用密碼插件如caching_sha2_password
時,默認要求加密通信,并且不允許通過不安全的方式獲取服務(wù)器的公鑰。
解決這個問題的方法有以下幾種:
-
允許公鑰檢索:
在客戶端連接字符串或配置文件中設(shè)置allowPublicKeyRetrieval=true
。但請注意,這僅用于測試和臨時解決方案,因為它會降低連接的安全性。在生產(chǎn)環(huán)境中應(yīng)避免此做法,而是確保正確配置了SSL。
String url = "jdbc:mysql://yourserver:3306/database?useSSL=true&allowPublicKeyRetrieval=true&serverTimezone=UTC";
-
啟用SSL并提供正確的信任證書:
- 在服務(wù)器端配置MySQL以支持SSL連接。
- 客戶端需要有與服務(wù)器匹配的CA證書,將其添加到客戶端的信任存儲中。
- 更新客戶端連接URL以包含SSL選項:
useSSL=true
并可能需要指定sslTrustStore
和sslTrustStorePassword
參數(shù)。
-
更改MySQL服務(wù)器上的用戶密碼插件:
如果你希望保持高安全性但又想簡化連接過程,可以將MySQL服務(wù)器上的用戶密碼插件改為mysql_native_password
。這樣,客戶端無需進行復(fù)雜的SSL配置即可連接,但這意味著放棄了新版本MySQL默認提供的更強密碼安全策略。
執(zhí)行如下命令來更改用戶密碼插件:文章來源:http://www.zghlxwxcb.cn/news/detail-843186.html
ALTER USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;
請根據(jù)實際情況選擇合適的方法解決問題,并始終優(yōu)先考慮生產(chǎn)環(huán)境中的數(shù)據(jù)安全性。文章來源地址http://www.zghlxwxcb.cn/news/detail-843186.html
到了這里,關(guān)于mysql 連接出現(xiàn) Public Key Retrieval is not allowed的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!