SQLyog连接MySQL8.0出现Error No.1251

有段时间没用MySQL了,之前还能正确进入的,但现在一启动就给我报了这个错误;依稀记得需要修改数据库密码才能解决,但是过程忘了,特此记录。

经过下文的实践,这是错误的想法;需要做的是修改数据库权限规则

错误提示

js 复制代码
Error No.1251

Client does not support authentication protocol requested by server;

consider upgrading MySQL client

我也百度了下原因,别人是这样说的:

复制代码
主要是由于mysql8以前的加密规则与mysql8以后的存在差异

客户端和服务端版本差别太大

特地查看了下本地版本,好像是8.0版本之后会出现的问题。

参考地址:(5条消息) Mysql忘记登录密码的解决步骤(完整步骤)_mysql忘记密码怎么看密码_小达学加瓦的博客-CSDN博客

解决策略:(因为忘记密码,先重置密码,再修改权限)

1. 以管理员身份运行cmd,关闭mysql服务

js 复制代码
net stop mysql

然而。。。好像还关闭掉。。。问题不大,手动关闭去

2. 跳过密码输入授权

js 复制代码
mysqld --console --skip-grant-tables --shared-memory

3. 再打开一个cmd窗口,重置密码

js 复制代码
mysql

然而。。。意外又发生了。问题不大,有事百度

参考地址:(5条消息) MYSQL登录遇到的问题:解决ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost:3306'(10061)_计机小白羊的博客-CSDN博客

3.1 在该窗口继续输入mysqld --console

3.2 然后重新在cmd中打开上面窗口,即第二个窗口(注意用管理员权限打开上述窗口,且第一个窗口不能关闭)

然而还是报错,难道是mysql环境配错了吗,我看看环境变量去

3.3 配置MySQL环境变量

参考地址:(5条消息) MySQL配置环境变量_mysql环境配置_Mye_Strive的博客-CSDN博客

看了下环境变量,的确没有配置;但是问题又来了,Mysql我忘了在哪安装了,但是问题不大,之前安装程序上有安装位置,走起

但是环境变量配置完毕后,还是不能进入数据库,我猜应该是之前手动关闭数据库服务的原因。。。可开启后还是无效,得换个法子了

我从后往前看了一遍,应该是步骤2这儿error导致免密码登录失败,百度~

参考地址: (5条消息) mysql data ibdata1_解决Mysql数据库InnoDB: The innodb_system data file 'ibdata1' must be writable..._cxy简简的博客-CSDN博客

参考后成功开启免密服务,输入mysql进入

4.使用mysql数据表

perl 复制代码
use mysql

5.输入代码,将密码设置为空(此时还不能直接修改密码,必须先设置为空,否则会报错)

sql 复制代码
update user set authentication_string='' where user='root';

6.然后退出Mysql

复制代码
quit

7.更改自己的登陆密码

7.1 关闭第一个cmd窗口(一定要关闭!)

7.2 在第二个窗口中输入代码

7.2.1 关闭mysql服务,虽然会显示没有开启服务,但是以防万一

arduino 复制代码
net stop mysql

7.2.2 再打开mysql服务

sql 复制代码
net start mysql

7.2.3 登录mysql(密码为空)

css 复制代码
mysql -u root -p

7.2.4 修改密码

sql 复制代码
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

8. 验证密码是否修改成功

css 复制代码
quit(退出mysql) 
mysql -u root -p (输入新密码,再次登录) 
成功~~~

9。 再次登录SQLyog

然而还是失败,原来之前只是修改了密码,还需要更新权限

10. 更新权限(password为数据库密码)

sql 复制代码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER
sql 复制代码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
ini 复制代码
FLUSH PRIVILEGES;

11. 再再次登录SQLyog,登录成功

总结:

复制代码
因为mysql 8 加密规则的不同导致此次问题,进入数据库修改权限即可。
相关推荐
程序员爱钓鱼几秒前
Node.js 编程实战:测试与调试 —— 日志与监控方案
前端·后端·node.js
雄大5 分钟前
使用 QWebChannel 实现 JS 与 C++ 双向通信(超详细 + 踩坑总结 + Demo)
后端
计算机学姐6 分钟前
基于SpringBoot的汉服租赁系统【颜色尺码套装+个性化推荐算法+数据可视化统计】
java·vue.js·spring boot·后端·mysql·信息可视化·推荐算法
回家路上绕了弯7 分钟前
定期归档历史数据实战指南:从方案设计到落地优化
分布式·后端
+VX:Fegn08957 分钟前
计算机毕业设计|基于springboot + vue建筑材料管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
掘金者阿豪8 分钟前
Redis `WRONGTYPE` 错误的原因及解决方法
后端
天天摸鱼的java工程师11 分钟前
线程池深度解析:核心参数 + 拒绝策略 + 动态调整实战
java·后端
小杨同学4919 分钟前
C 语言实战:动态规划求解最长公共子串(连续),附完整实现与优化
后端
Cache技术分享21 分钟前
290. Java Stream API - 从文本文件的行创建 Stream
前端·后端
用户9483570165122 分钟前
拒绝 try-catch:如何设计全局通用的异常拦截体系?
后端