Navicat远程连接MySQL8时报“1251”的解决方法(建议‘root‘@‘localhost‘和‘root‘@‘%‘共存)
[重要通告]如您遇疑难杂症,本站支持知识付费业务,扫右边二维码加博主微信,可节省您宝贵时间哦!
这两天折腾泛微ecology9在Linux系统下运行,折腾的实属够呛,真的是蛋疼,有一种蛋碎的赶脚~也实属无奈,咋也得搞定不是!!!
这不用Navicat连接MySQL8远程连接时报错“1251 Client does not support authentication protocol requested by server;consider upgrading MySQL client”
翻译一下结果为:1251客户端不支持服务器请求的认证协议,考虑升级MySQL客户端 错误如下图所示
Navicat远程连接MySQL8时报“1251”的解决方法
出现这个原因是mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password;
一种是升级 navicat 驱动;一种是把 mysql 用户登录密码加密规则还原成 mysql_native_password,更改加密方式为“mysql_native_password”更为方便快捷;
写在前面:建议root‘@‘localhost‘和‘root‘@‘%‘共存
1、先登录mysql -u root -p、然后切换到mysql数据库use mysql;、查看SELECT User, Host FROM mysql.user;
如root用户的host字段是localhost,那需要更改权限让root用户可以从任何主机登录。
如,root用户的host字段是localhost,不符合要求:
说明:下面因为让‘root‘@‘localhost‘和‘root‘@‘%‘共存,我选择新建用户!
2、先让‘root‘@‘localhost‘执行“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、创建一个允许从任何主机登录的root用户,密码为laoliang
CREATE USER 'root'@'%' IDENTIFIED BY 'laoliang';
-- 创建'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连接数据库喽;
延伸阅读:修改‘root‘@‘localhost‘变成‘root‘@‘%‘远程连接的方式方法
1、创建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号又微信号)右上方扫一扫可加博主微信
所写所说,是心之所感,思之所悟,行之所得;文当无敷衍,落笔求简洁。 以所舍,求所获;有所依,方所成!