MySQL8.0報錯Public?Key?Retrieval?is?not?allowed的原因及解決方法
這個問題出現(xiàn)原因,我在升級了mysql之后發(fā)現(xiàn)連mysql時后臺報錯,報的就是標題這個錯,然后就上網(wǎng)查資料,官網(wǎng)文檔機翻后原因如下:
如果用戶帳戶使用sha256_密碼認證,則在傳輸過程中必須保護密碼;TLS是這方面的首選機制,但如果它不可用,則將使用RSA公鑰加密。要指定服務(wù)器的RSA公鑰,請使用ServerRSPublicKeyFile連接字符串設(shè)置,或設(shè)置AllowPublicKeyRetrieval=True以允許客戶端自動從服務(wù)器請求公鑰。請注意,AllowPublicKeyRetrieval=True可能允許惡意代理執(zhí)行MITM攻擊以獲取明文密碼,因此默認為False,必須顯式啟用。
大概意思就是mysql賬號的密碼是用的sha256方式加密,而客戶端連接mysql的時候并非使用TLS協(xié)議傳輸參數(shù),那么需要客戶端使用RSA算法公鑰加密傳輸參數(shù),而服務(wù)端默認是不允許客戶端獲取公鑰,需要開啟這個開關(guān)。
知道原因后解決方式:
方式一:
客戶端的驅(qū)動連接參數(shù)中增加:allowPublicKeyRetrieval=true&useSSL=false
1、右鍵編輯連接
2、點擊驅(qū)動屬性,找到allowPublicKeyRetrieval,把false改為true
3、最后重新啟動
方式二:
之前我在修改mysql的root用戶的時候直接使用的語句是:alter user 'root'@'localhost' identified by 'xxx'; 所以mysql默認使用sha_256加密了。
現(xiàn)在修改mysql賬號的密碼,使用其他的加密方式,直接修改賬號密碼:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxx';
這樣問題就解決了,另外,修改用戶host語句附上:
use mysql;
update user set host='%' where user='root';
這樣mysql就可以遠程登陸了。
以上就是MySQL8.0報錯Public Key Retrieval is not allowed的原因及解決方法的詳細內(nèi)容,更多關(guān)于MySQL Public Key Retrieval is not allowed的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
如何通過sql查找所有父節(jié)點和所有子節(jié)點(以mysql為例)
這篇文章主要給大家介紹了關(guān)于如何通過sql查找所有父節(jié)點和所有子節(jié)點,本文以mysql為例,項目中遇到一個需求,要求查處菜單節(jié)點的所有節(jié)點,這里給大家總結(jié)下,需要的朋友可以參考下2023-08-08MySQL刪除數(shù)據(jù)后自增主鍵ID不連貫問題及解決
這篇文章主要介紹了MySQL刪除數(shù)據(jù)后自增主鍵ID不連貫問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-09-09Mysql使用函數(shù)json_extract處理Json類型數(shù)據(jù)的方法實例
在日常業(yè)務(wù)開發(fā)中通常mysql數(shù)據(jù)庫中某個字段會需要存儲json格式字符串,下面這篇文章主要給大家介紹了關(guān)于Mysql使用函數(shù)json_extract處理Json類型數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2022-09-09