不知道是咋了,昨天是mysql链接不上去,重装了mysql,今天又是navicat链接不上去了。报错1045,在网上找了许多方法都不行,然后我又重新安装了一遍mysql,结构还是不能登录,这次又报错1251,所以我又去查为什么报错1251,下面是我找到的方法,亲测有效!
报错:
1251 - client does not support authentication protocol requested by server;consider upgrading MySQL client
解决方法:
根据报错的字面意思:客户端不支持服务器请求的身份验证协议,可考虑升级MySQL客户端。
问题就出在用户密码上.
经查询:MySQL8.0.4以前的版本和MySQL8.0.4及以后的版本,密码认证插件有所改变,之前使用的是“mysql_native_password”,8.0.4及以后使用的是“caching_sha2_password”,
所以在修改密码的语句上,也有所不同,以前修改密码语句:
SET PASSWORD=PASSWORD('newpassword')
而现在的修改密码的语句:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword';
?所以,我们可以把密码认证插件改为“mysql_native_password”,同时修改密码。
-- 命令提示符窗口登录mysql
mysql -u root -p
-- 查看用户相关信息:
/*
user: 用户名
host:允许连接的主机,%表示所有主机都可以连接
plugin:密码认证插件
authentication_string :密码,加密处理了的
*/
select host,user,plugin,authentication_string from mysql.user;
-- 修改密码认证插件为mysql_native_password,同时修改密码:我这里修改密码为root
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
修改前:
?
修改后:
?
?再次使用navicat链接测试,显示连接成功!!!
Reference:MySQL使用Navicat远程连接时报错1251 - 落泪秋 - 博客园 (cnblogs.com)
|