MySQL 报错 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES/NO) 表示用户 root 登录时身份验证失败,通常与密码错误或权限设置有关。以下是详细解决步骤:
一、确认密码是否正确
-
检查密码输入是否有误
- 密码区分大小写,确保输入的密码与设置的完全一致(包括特殊字符、空格等)。
- 若不确定密码,尝试回忆或查找历史记录(如安装时记录的密码)。
-
尝试无密码登录
- 若之前未设置密码或密码为空,登录时省略
-p参数:mysql -u root # 不输入密码直接登录 - 若成功登录,说明密码为空,可后续重新设置密码。
- 若之前未设置密码或密码为空,登录时省略
二、重置 root 密码(密码遗忘或错误时)
若确认密码错误且无法回忆,需重置 root 密码。
重置步骤
-
停止 MySQL 服务打开
服务(Win+R→ 输入services.msc),找到 MySQL 服务(如MySQL80),右键「停止」。 -
跳过权限验证启动 MySQL以管理员身份打开命令提示符(CMD),执行:
# 进入 MySQL 安装目录的 bin 文件夹(路径根据实际安装位置修改) cd C:\Program Files\MySQL\MySQL Server 8.0\bin # 跳过权限验证启动服务 mysqld --console --skip-grant-tables --shared-memory(执行后该窗口会保持运行状态,不要关闭)
-
新窗口登录并重置密码再打开一个 CMD 窗口,进入相同的
bin目录,执行:# 无密码登录 mysql -u root # 切换到 mysql 系统数据库 USE mysql; # 重置密码(MySQL 8.0 及以上版本用此命令) ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; # 若报错,尝试刷新权限后再重置 FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; -
重启服务关闭所有 CMD 窗口,在「服务」中重启 MySQL 服务,用新密码登录:
mysql -u root -p # 输入新密码
-
重启服务
sudo systemctl restart mysql # 用新密码登录 mysql -u root -p
三、检查用户主机权限(非 localhost 登录问题)
若报错显示 'root'@'192.168.1.100' 而非 localhost,说明用户 root 仅允许从 localhost 登录,不允许远程登录。解决方法:授权 root 允许从指定主机登录:
-- 登录后执行(需替换 '新密码' 和 '允许的主机IP',% 表示允许所有IP)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'允许的主机IP' IDENTIFIED BY '新密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;
四、其他可能原因
-
密码文件损坏若 MySQL 数据目录(如
C:\ProgramData\MySQL\Data或/var/lib/mysql)中的权限文件损坏,可能导致验证失败。需通过重置密码修复(见步骤二)。 -
防火墙或端口限制远程登录时,若防火墙未开放 3306 端口,可能被误认为密码错误,需开放端口后重试。
总结
核心解决思路:
- 确认密码正确性,排除输入错误;
- 密码遗忘时,通过「跳过权限验证」模式重置密码;
- 检查用户是否被限制登录主机(本地 / 远程)。
按以上步骤操作,即可解决 Access denied 登录失败问题。
1万+

被折叠的 条评论
为什么被折叠?



