C:\Users\heco>mysql -u root -p Enter password: ****** ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
时间: 2025-07-12 13:32:53 浏览: 15
MySQL 连接时出现错误:`ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)`,通常与数据库的认证机制、密码验证或配置文件相关。以下是解决此问题的具体步骤:
### 修改 MySQL 配置以跳过权限验证
编辑 MySQL 的配置文件 `my.ini`(一般位于 MySQL 安装目录下),在 `[mysqld]` 段落中添加以下内容:
```
skip-grant-tables
```
该配置项允许跳过权限验证,从而无需密码登录数据库。
### 停止 MySQL 服务
打开命令提示符(CMD)并以管理员身份运行,输入以下命令停止 MySQL 服务:
```bash
net stop mysql
```
### 登录 MySQL 并修改密码
进入 MySQL 的安装路径下的 `bin` 文件夹,执行以下命令直接登录 MySQL(此时不需要密码):
```bash
mysql -u root -p
```
进入 MySQL 后,依次执行以下 SQL 语句来更新密码和权限:
#### 清空用户密码
使用 `mysql` 数据库,并将 `root` 用户的密码字段清空:
```sql
use mysql;
update user set authentication_string='' where user='root';
flush privileges;
```
#### 设置新密码并授权
更新 `root` 用户的密码为 `123456`,并设置密码永不过期,同时授予所有权限:
```sql
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
alter user 'root'@'localhost' identified by '123456';
grant all privileges on *.* to 'root'@'localhost';
flush privileges;
```
### 恢复 MySQL 配置并重启服务
回到 `my.ini` 文件,删除之前添加的 `skip-grant-tables` 配置项,保存文件后退出。然后,在 CMD 中输入以下命令重启 MySQL 服务:
```bash
net start mysql
```
### 其他可能的原因及排查
如果上述方法无法解决问题,可能是由于其他原因导致的连接失败:
- **端口占用问题**:检查 3306 端口是否被其他进程占用。可以通过 `netstat -ano` 查看端口占用情况,并通过 `tasklist | findstr <PID>` 查询具体进程。
- **防火墙限制**:确保防火墙未阻止 MySQL 的端口(默认为 3306)。
- **用户权限问题**:确认 `root` 用户的访问权限是否正确配置,特别是远程访问权限。
- **加密插件问题**:某些情况下,MySQL 使用了不兼容的加密插件,可以尝试更改用户的认证方式。
通过以上步骤,大多数由密码或权限配置引起的 `Access denied` 错误都可以得到有效解决[^1]。
阅读全文
相关推荐












