MySQL8.0報錯Public?Key?Retrieval?is?not?allowed的原因及解決方法
這個問題出現(xiàn)原因,我在升級了mysql之后發(fā)現(xiàn)連mysql時后臺報錯,報的就是標題這個錯,然后就上網(wǎng)查資料,官網(wǎng)文檔機翻后原因如下:
如果用戶帳戶使用sha256_密碼認證,則在傳輸過程中必須保護密碼;TLS是這方面的首選機制,但如果它不可用,則將使用RSA公鑰加密。要指定服務器的RSA公鑰,請使用ServerRSPublicKeyFile連接字符串設置,或設置AllowPublicKeyRetrieval=True以允許客戶端自動從服務器請求公鑰。請注意,AllowPublicKeyRetrieval=True可能允許惡意代理執(zhí)行MITM攻擊以獲取明文密碼,因此默認為False,必須顯式啟用。
大概意思就是mysql賬號的密碼是用的sha256方式加密,而客戶端連接mysql的時候并非使用TLS協(xié)議傳輸參數(shù),那么需要客戶端使用RSA算法公鑰加密傳輸參數(shù),而服務端默認是不允許客戶端獲取公鑰,需要開啟這個開關。
知道原因后解決方式:
方式一:
客戶端的驅動連接參數(shù)中增加:allowPublicKeyRetrieval=true&useSSL=false
1、右鍵編輯連接

2、點擊驅動屬性,找到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)容,更多關于MySQL Public Key Retrieval is not allowed的資料請關注腳本之家其它相關文章!
相關文章
mysql下優(yōu)化表和修復表命令使用說明(REPAIR TABLE和OPTIMIZE TABLE)
隨著mysql的長期使用,肯定會出現(xiàn)一些問題,一般情況下mysql表無法訪問,就可以修復表了,優(yōu)化時減少磁盤占用空間。方便備份。2011-01-01
mysql如何修改表結構(alter table),多列/多字段
這篇文章主要介紹了mysql如何修改表結構(alter table),多列/多字段問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12
mysql中engine=innodb和engine=myisam的區(qū)別介紹
MyISAM類型不支持事務處理等高級處理,而InnoDB類型支持,本文為大家講解下mysql中engine=innodb和engine=myisam的區(qū)別,不懂的朋友可以學習下,希望對大家有所幫助2013-07-07

