确认用户名和密码正确,注意大小写和输入方式;2. 检查用户是否允许从当前主机连接,如'root'@'localhost'与'root'@'%'权限不同;3. 需远程访问时应创建或修改用户host为'%'并授权;4. 忘记密码可跳过验证重置:停止服务后以--skip-grant-tables启动,登录后刷新权限并修改密码;5. 检查配置文件中bind-address是否限制为127.0.0.1,必要时注释或改为主机IP;6. 确保防火墙或安全组开放3306端口。按此顺序排查可解决MySQL 1045错误。

MySQL报1045错误,通常是因为“访问被拒绝”,即客户端无法通过验证登录到MySQL服务器。这个错误提示一般会显示类似:
ERROR 1045 (28000): Access denied for user '用户名'@'主机名' (using password: YES|NO)
这说明MySQL服务器拒绝了你的登录请求。下面从几个常见原因出发,给出解决方法。
检查用户名和密码是否正确
最常见的原因是输错了用户名或密码。
- 确认输入的用户名是否准确,比如root还是其他自定义用户。
- 检查密码是否正确,注意大小写和特殊字符。
- 如果使用命令行登录,确保没有遗漏 -p 参数或误加空格。
- 例如:mysql -u root -p,然后输入密码。
确认用户是否有权限从当前主机连接
MySQL用户是“用户名+主机名”组合的,比如 'root'@'localhost' 和 'root'@'%' 是不同的账户。
- 如果你是从远程连接,但用户只允许从localhost登录,就会被拒绝。
- 可以登录MySQL后执行:
SELECT host,user FROM mysql.user;
查看对应用户的host值。 - 如果需要允许远程访问,确保用户host为 '%' 或具体IP。
- 如需修改,可执行:
CREATE USER 'root'@'%' IDENTIFIED BY '你的密码';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
重置root密码(忘记密码时)
如果你确定密码错了且无法登录,可以通过跳过权限验证来重置密码。
- 停止MySQL服务:
sudo systemctl stop mysql - 以跳过权限表的方式启动:
sudo mysqld --skip-grant-tables --skip-networking & - 此时无需密码登录MySQL:
mysql -u root - 进入后执行:
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
(如果是其他host,替换对应值) - 退出并重启MySQL服务即可正常使用新密码。
检查MySQL服务是否允许外部连接
有些配置默认禁止远程访问。
- 查看配置文件 my.cnf 或 my.ini 中是否有 bind-address = 127.0.0.1,这表示只监听本地。
- 如需远程访问,可注释掉或改为服务器IP,然后重启MySQL。
- 同时确保防火墙或安全组放行了3306端口。
基本上就这些。先确认账号密码,再看权限和访问来源,必要时重置密码。问题大多能解决。










