Navicat遠(yuǎn)程連接MySQL8時(shí)報(bào)“1251”的解決方法(建議‘root‘@‘localhost‘和‘root‘@‘%‘共存)
[重要通告]如您遇疑難雜癥,本站支持知識(shí)付費(fèi)業(yè)務(wù),掃右邊二維碼加博主微信,可節(jié)省您寶貴時(shí)間哦!
這兩天折騰泛微ecology9在Linux系統(tǒng)下運(yùn)行,折騰的實(shí)屬夠嗆,真的是蛋疼,有一種蛋碎的趕腳~也實(shí)屬無(wú)奈,咋也得搞定不是?。?!
這不用Navicat連接MySQL8遠(yuǎn)程連接時(shí)報(bào)錯(cuò)“1251 Client does not support authentication protocol requested by server;consider upgrading MySQL client”
翻譯一下結(jié)果為:1251客戶(hù)端不支持服務(wù)器請(qǐng)求的認(rèn)證協(xié)議,考慮升級(jí)MySQL客戶(hù)端? 錯(cuò)誤如下圖所示
Navicat遠(yuǎn)程連接MySQL8時(shí)報(bào)“1251”的解決方法
出現(xiàn)這個(gè)原因是mysql8 之前的版本中加密規(guī)則是mysql_native_password,而在mysql8之后,加密規(guī)則是caching_sha2_password;
一種是升級(jí) navicat 驅(qū)動(dòng);一種是把 mysql 用戶(hù)登錄密碼加密規(guī)則還原成 mysql_native_password,更改加密方式為“mysql_native_password”更為方便快捷;
寫(xiě)在前面:建議root‘@‘localhost‘和‘root‘@‘%‘共存
1、先登錄mysql -u root -p、然后切換到mysql數(shù)據(jù)庫(kù)use mysql;、查看SELECT User, Host FROM mysql.user;
如root用戶(hù)的host字段是localhost,那需要更改權(quán)限讓root用戶(hù)可以從任何主機(jī)登錄。
如,root用戶(hù)的host字段是localhost,不符合要求:
說(shuō)明:下面因?yàn)樽尅畆oot‘@‘localhost‘和‘root‘@‘%‘共存,我選擇新建用戶(hù)!
2、先讓‘root‘@‘localhost‘執(zhí)行“mysql_native_password”,不然后面會(huì)沒(méi)有權(quán)限;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456a'; ALTER USER 'root'@'localhost' IDENTIFIED BY '123456a' PASSWORD EXPIRE NEVER; FLUSH PRIVILEGES;
3、創(chuàng)建一個(gè)允許從任何主機(jī)登錄的root用戶(hù),密碼為laoliang
CREATE USER 'root'@'%' IDENTIFIED BY 'laoliang';
-- 創(chuàng)建'root'@'%'賬戶(hù) CREATE USER 'root'@'%' IDENTIFIED BY 'laoliang'; -- 給'root'@'%'賬戶(hù)設(shè)置權(quán)限 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; -- 刷新權(quán)限 flush privileges;
4、將加密方式改為mysql_native_password 帶上密碼
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'laoliang';
5、更新新用戶(hù)的密碼
ALTER USER 'root'@'%' IDENTIFIED BY 'laoliang' PASSWORD EXPIRE NEVER;
6、刷新新建用的所有信息
FLUSH PRIVILEGES;
在輸入select user,host,plugin from mysql.user;查詢(xún),是有兩個(gè)root信息,root用戶(hù)加密方式變成了“mysql_native_password”加密方式
這個(gè)時(shí)候便可以使用Navicat連接數(shù)據(jù)庫(kù)嘍;
延伸閱讀:修改‘root‘@‘localhost‘變成‘root‘@‘%‘遠(yuǎn)程連接的方式方法
1、創(chuàng)建mysql root用戶(hù)(有用戶(hù)不用理會(huì))
insert into user(User,authentication_string,ssl_cipher,x509_issuer,x509_subject) values('root','','','','');
2、添加空權(quán)限(有用戶(hù)自然有權(quán)限,依然不需要理會(huì))
update user set Host='%',select_priv='y', insert_priv='y',update_priv='y',Alter_priv='y',delete_priv='y',create_priv='y',drop_priv='y',reload_priv='y',shutdown_priv='y',Process_priv='y',file_priv='y',grant_priv='y',References_priv='y',index_priv='y',create_user_priv='y',show_db_priv='y',super_priv='y',create_tmp_table_priv='y',Lock_tables_priv='y',execute_priv='y',repl_slave_priv='y',repl_client_priv='y',create_view_priv='y',show_view_priv='y',create_routine_priv='y',alter_routine_priv='y',create_user_priv='y' where user='root';commit;
3、修改‘root‘@‘localhost‘變成‘root‘@‘%‘任意連接
update user set host='%' where user='root'; //更新root的host為‘%’ update user set plugin='mysql_native_password' where user='root';
4、更新plugin屬性為mysql_native_password
alter user 'root'@'%' identified with mysql_native_password by '你的密碼';
按照以上操作就可以搞定Navicat遠(yuǎn)程連接MySQL8報(bào)1251的錯(cuò)誤;
問(wèn)題未解決?付費(fèi)解決問(wèn)題加Q或微信 2589053300 (即Q號(hào)又微信號(hào))右上方掃一掃可加博主微信
所寫(xiě)所說(shuō),是心之所感,思之所悟,行之所得;文當(dāng)無(wú)敷衍,落筆求簡(jiǎn)潔。 以所舍,求所獲;有所依,方所成!