08
2025
05
00:39:28

【已解决】MySQL登录时出现ERROR 1045: Access denied for user ‘root‘@‘localhost‘ (using password: YES)无法打开解决方法 发

一、Bug描述

Mysql在使用过程中,可能会遇到登录问题,比如常见的错误信息:“Access denied for user ‘root’@‘localhost’ (using password: YES)”。

本文将分析这个问题的可能原因,并提供一系列解决方案

在这里插入图片描述
在这里插入图片描述

二、定位报错原因

出现这个Access denied问题的原因有如下可能:

  • MySQL的服务器停止了。

  • 用户的端口号或者IP导致拒绝访问。

  • MySQL的配置文件错误(通常是my.cnf或my.ini)。

  • root用户的密码错误。

  • 权限问题:用户可能没有足够的权限登录。

三、解决方案汇总

方案一:重设密码(建议忘记密码才使用这个方案)

步骤1:停止MySQL服务

Linux上,可以使用以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
sudo systemctl stop mysql

Windows上,可以通过服务管理器停止MySQL服务。

步骤2:以无密码模式启动MySQL

在Linux上,使用以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
sudo mysqld_safe --skip-grant-tables &

如果是Windows系统。

使用vi /etc/my.cnf,添加到【mysqld】后面

代码语言:javascript
代码运行次数:0
运行
AI代码解释
skip-grant-tables

重启MySQL服务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
systemctl restart mysqld

创建一个免密码登录的用户

代码语言:javascript
代码运行次数:0
运行
AI代码解释
use mysql  #选择数据库

update user set authentication_string=password("123456") where user="root";  #修改密码
步骤3:连接Mysql

使用以下命令连接到MySQL服务器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
mysql -u root
步骤4:设置新密码

在MySQL命令行中,执行以下命令来设置新密码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
FLUSH PRIVILEGES;ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
步骤5:重启Mysql服务

在Linux上,使用以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
sudo systemctl start mysql

Windows上,使用命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
net start mysql

方案二:检查用户权限

确保root用户具有从localhost登录的权限。可以使用以下命令查看权限:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
SHOW GRANTS FOR 'root'@'localhost';

如果权限不正确,可以使用以下命令授予所有权限:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;FLUSH PRIVILEGES;

方案三:修改配置文件(推荐)

检查MySQL的配置文件,确保没有错误的配置阻止了登录。

常见的配置文件路径为/etc/mysql/my.cnf或/etc/my.cnf 或者 D:\Program Files\MySQL\MySQL Server 5.0\my.ini)

在[mysqld]这个条目下加入

代码语言:javascript
代码运行次数:0
运行
AI代码解释
skip-grant-tables

保存退出后重启mysql即可。

这时候在cmd里面输入mysql -u root -p就可以不用密码登录了,出现 password:的时候直接回车可以进入,不会出现ERROR 1045 (28000),但很多操作都会受限制,因为我们不能grant(没有权限)。

我们接下来设置密码就可以了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
mysql> use mysql;mysql> update user set password=password("新密码") where user="root";

然后刷新数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)  mysql> quit;




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://www.hqyman.cn/post/11130.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: