答案是检查用户名密码、重置密码或调整用户权限。先确认登录信息是否正确,若遗忘密码则通过停止MySQL服务并启动安全模式(--skip-grant-tables)重置;登录后使用ALTER USER修改密码并刷新权限;检查mysql.user表中root用户的Host值是否匹配连接方式,必要时创建对应用户或修改Host;确保MySQL服务正常运行且端口无冲突;操作完成后重启服务并移除跳过权限验证的配置以保障安全。
登录 MySQL 时出现错误 1045,通常提示为 ERRO
R 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES/NO),这表示用户名或密码不正确,或者权限配置有问题。下面介绍几种常见解决方法。
检查用户名和密码是否正确
确保输入的用户名和密码准确无误:
- 确认是否使用了正确的用户名(如 root 或其他自定义用户)
- 检查密码是否输入错误,注意大小写和特殊字符
- 如果忘记密码,不要直接尝试多次登录,避免账户被临时锁定
重置 MySQL root 密码
如果你确定密码错误或已遗忘,可以进入安全模式重置密码:
步骤如下(以 Linux 或 Windows 管理员身份操作):
- 停止 MySQL 服务:
Linux: sudo systemctl stop mysql
Windows: 在服务管理器中停止 MySQL 服务
- 启动 MySQL 安全模式(跳过权限验证):
运行命令:mysqld --skip-grant-tables --shared-memory(Windows)
或在配置文件中添加 skip-grant-tables 后启动
- 打开新终端,登录 MySQL(无需密码):
mysql -u root
- 修改密码(MySQL 8.0+ 语法):
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
如果使用旧版本,可能需要更新 mysql.user 表
- 刷新权限并重启 MySQL:
执行 FLUSH PRIVILEGES;,然后正常重启服务
检查用户连接权限
有时用户只能从特定主机登录,比如 'root'@'127.0.0.1' 无法通过 'root'@'localhost' 登录:
- 登录后可查看用户权限:SELECT User, Host FROM mysql.user;
- 若需允许远程或其他方式登录,可创建新用户或修改 Host 字段
- 例如添加用户允许本地登录:CREATE USER 'root'@'localhost' IDENTIFIED BY '密码';
确认 MySQL 服务正常运行
错误 1045 有时是由于客户端连接到了错误的服务实例或服务未完全启动:
- 确认 MySQL 正在运行
- 检查端口(默认 3306)是否被占用或防火墙拦截
- 使用 netstat -an | grep 3306 查看监听状态
基本上就这些。重点是先判断是密码问题还是权限/配置问题,再选择重置密码或调整用户权限。操作时注意版本差异,尤其是 MySQL 8.0 之后的认证机制变化。处理完成后记得移除 skip-grant-tables 配置,保障数据库安全。