Navicat遠程連接MySQL8時報“1251”的解決方法(建議‘root‘@‘localhost‘和‘root‘@‘%‘共存)
[重要通告]如您遇疑難雜癥,本站支持知識付費業(yè)務,掃右邊二維碼加博主微信,可節(jié)省您寶貴時間哦!
這兩天折騰泛微ecology9在Linux系統(tǒng)下運行,折騰的實屬夠嗆,真的是蛋疼,有一種蛋碎的趕腳~也實屬無奈,咋也得搞定不是!!!
這不用Navicat連接MySQL8遠程連接時報錯“1251 Client does not support authentication protocol requested by server;consider upgrading MySQL client”
翻譯一下結果為:1251客戶端不支持服務器請求的認證協(xié)議,考慮升級MySQL客戶端? 錯誤如下圖所示
Navicat遠程連接MySQL8時報“1251”的解決方法
出現(xiàn)這個原因是mysql8 之前的版本中加密規(guī)則是mysql_native_password,而在mysql8之后,加密規(guī)則是caching_sha2_password;
一種是升級 navicat 驅動;一種是把 mysql 用戶登錄密碼加密規(guī)則還原成 mysql_native_password,更改加密方式為“mysql_native_password”更為方便快捷;
寫在前面:建議root‘@‘localhost‘和‘root‘@‘%‘共存
1、先登錄mysql -u root -p、然后切換到mysql數(shù)據(jù)庫use mysql;、查看SELECT User, Host FROM mysql.user;
如root用戶的host字段是localhost,那需要更改權限讓root用戶可以從任何主機登錄。
如,root用戶的host字段是localhost,不符合要求:
說明:下面因為讓‘root‘@‘localhost‘和‘root‘@‘%‘共存,我選擇新建用戶!
2、先讓‘root‘@‘localhost‘執(zhí)行“mysql_native_password”,不然后面會沒有權限;
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)建一個允許從任何主機登錄的root用戶,密碼為laoliang
CREATE USER 'root'@'%' IDENTIFIED BY 'laoliang';
-- 創(chuàng)建'root'@'%'賬戶 CREATE USER 'root'@'%' IDENTIFIED BY 'laoliang'; -- 給'root'@'%'賬戶設置權限 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; -- 刷新權限 flush privileges;
4、將加密方式改為mysql_native_password 帶上密碼
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'laoliang';
5、更新新用戶的密碼
ALTER USER 'root'@'%' IDENTIFIED BY 'laoliang' PASSWORD EXPIRE NEVER;
6、刷新新建用的所有信息
FLUSH PRIVILEGES;
在輸入select user,host,plugin from mysql.user;查詢,是有兩個root信息,root用戶加密方式變成了“mysql_native_password”加密方式
這個時候便可以使用Navicat連接數(shù)據(jù)庫嘍;
延伸閱讀:修改‘root‘@‘localhost‘變成‘root‘@‘%‘遠程連接的方式方法
1、創(chuàng)建mysql root用戶(有用戶不用理會)
insert into user(User,authentication_string,ssl_cipher,x509_issuer,x509_subject) values('root','','','','');
2、添加空權限(有用戶自然有權限,依然不需要理會)
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遠程連接MySQL8報1251的錯誤;
問題未解決?付費解決問題加Q或微信 2589053300 (即Q號又微信號)右上方掃一掃可加博主微信
所寫所說,是心之所感,思之所悟,行之所得;文當無敷衍,落筆求簡潔。 以所舍,求所獲;有所依,方所成!