1. 问题描述
在使用 MySQL 时,经常会遇到以下报错:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
即 root 用户从 localhost 登陆时被拒绝访问。本文将分析该问题的可能原因,并给出几种常用解决方案。
2. 错误原因解析
导致 ERROR 1045 报错的常见原因包括:
- MySQL 服务未启动或停止响应。
- 使用了错误的用户名/密码组合。
- 用户被限制从当前 IP 或主机登录。
- my.cnf / my.ini 配置文件中有禁止登录的项。
- 数据库权限设置有误,root 用户缺少必要登录权限。
3. 多种解决方案
方案一:重设 root 用户密码(适用于忘记密码或登录失败)
步骤 1: 停止 MySQL 服务
- 在 Windows 系统:通过服务管理器停止 MySQL 服务。
在 Linux 系统:
sudo systemctl stop mysql
步骤 2: 启动 MySQL 跳过权限验证
或者编辑 my.cnf 或 my.ini,在 [mysqld] 下添加:
skip-grant-tables
然后重启服务。
在 Linux 上执行:
sudo mysqld_safe --skip-grant-tables &
步骤 3: 无密码模式连接
mysql -u root
步骤 4: 修改 root 密码并刷新权限
USE mysql;
UPDATE user SET authentication_string = PASSWORD('新密码') WHERE user='root';
FLUSH PRIVILEGES;
步骤 5: 重启 MySQL 服务并使用新密码登录。
方案二:检查并修正 root 用户权限
执行以下 SQL 查看当前 root 用户权限:
SHOW GRANTS FOR @;

