MySQL修改密码后无法进入问题ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor) 您所在的位置:网站首页 mysql登陆报错 MySQL修改密码后无法进入问题ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor)

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

2023-09-29 20:18| 来源: 网络整理| 查看: 265

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;

一切回归正常使用!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有