MySQL修改密码后无法进入问题ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor)

MySQL之前无密码,使用

UPDATE mysql.user SET authentication_string=’xxxx’ WHERE user=’root’ and host=’localhost’;

修改增加密码后登入一直报错, root以及密码确定是正确,却怎么也无法从本地登录MySQL,提示
ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES);

网上查找原因:mysql库中的user表缺少一个root指向host:localhost的数据项,只有一个root指向host:主机名的数据项,故怎么也无法利用root账户登录MySQL。

但是按照方法关闭MySQL进程然后在启动mysql的参数中加入 –skip-grant-tables来无密码登入,MySQL却无法启动;去除该参数后服务正常启动。而CMD控制台跳转到mysql的bin目录下,再输入mysqld –skip-grant-tables ,依然无效。此时密码登入失败,无密码登入失效。

多方查找后发现:

在MySQL 8.04前,执行:SET PASSWORD=PASSWORD(‘[新密码]’);但是MySQL8.0.4开始,这样默认是不行的。因为之前,MySQL的密码认证插件是“mysql_native_password”,而现在使用的是“caching_sha2_password”。

发现是由于版本原因导致:
在MySQL8版本下:
1. mysqld –console –skip-grant-tables –shared-memory 可以无密码启动服务
2. 然后另开窗口:mysql.exe -u root 登入
3. 进入mysql数据库:(可以证明并非user和host不匹配问题)
这里写图片描述
4. 将密码置空:

UPDATE mysql.user SET authentication_string=” WHERE user=’root’ and host=’localhost’;

5.操作完成后退出重新登录(无需密码);

MySQL8正确修改密码语法:

进入数据库:use mysql;
修改密码:ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘新密码’;
刷新权限: FLUSH PRIVILEGES;

一切回归正常使用!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值