mysql连接时报错1045和2058的解决方法

  1. MySql使用SQLyog第一次连接时输入root账户密码容易出现1045错误ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: NO)
    1045解决方法
    在这里插入图片描述

注意:大多数都是说要在my.ini文件的[mysqld]后添加skip-grant-tables,在mysql8.0以上版本行不通

  1. 按照上面修改后报2058错误https://www.cnblogs.com/hualalalala/p/9344772.html):
    2058解决方法
    在这里插入图片描述

  2. 成功解决

分析:这是我们在安装时创建的root密码为明文,是没有经过加密,SQLyog连接时无法识别。怎么理解呢?
经过上面的操作,我们的密码已经设置为密文了,接下来我们使用root账户(可使用mysqld --console --skip-grant-tables --shared-memory跳过密码)登录数据库(一定要是root,普通用户是无权限进入这个表的,会报1044错误),输入use mysql 进入mysql数据库,使用select user,authentication_string from user;打印出user表的用户名和密码
在这里插入图片描述

(1)如果是密文的话,我们看到的是上图root用户这样的乱码,第一个用户是我用CREATE USER 'donglu'@'localhost' IDENTIFIED BY '123456';创建的;
(2)如果是明文的话,我们可以看到密码就是123456。

我又尝试着使用update user set authentication_string='123456' where user='root';,执行该更新操作后,重复上面打印user表的操作,发现密码由密文‘123546’的乱码变为可见的明文’123456’,

我猜测:是因为update就是简单的sql更新语句,并不会对数据进行加密,而上面的creat user能产生密文是因为这是专门操作用户的sql语句,具有加密功能。
然后执行quit退出数据库,在次尝试输入密码登录,完了芭比Q,再次报1045错误,原来现在又回到最初明文的格式了,重新按照第一篇文章的方法修改密码,可见ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';方式修改密码也是加密
在这里插入图片描述
(个人理解,欢迎评论区留言指正)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值