MySQL SQLSTATE Access Denied for User ‘root’@’localhost’错误
在使用MySQL数据库过程中,时常会遇到以下报错:
SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)
这个报错信息是告诉我们,当前的用户root在localhost上以密码的方式连接MySQL数据库时被拒绝了。这种报错信息通常出现在以下几种情况中:
- root用户密码错误
- root用户没有在localhost上授权
- MySQL服务没有启动
- MySQL服务启动但是监听地址(IP)输入错误
下面我们逐步分析解决这些问题的方法。
阅读更多:MySQL 教程
1. root用户密码错误
使用root用户登录MySQL时,如果发现密码错误,可以尝试使用忘记密码的罚法进行重置。以下为Windows系统重置MySQL密码的步骤:
- 打开CMD控制台,切换到MySQL安装目录的bin目录下;
- 使用以下命令停止MySQL服务:
net stop mysql
; - 使用以下命令启动MySQL服务:
net start mysql --skip-grant-tables
; - 打开新的CMD窗口,切换到MySQL安装目录的bin目录下
- 使用以下命令进入MySQL服务:
mysql -u root
; - 再次输入以下命令进行密码重置:
update mysql.user set authentication_string=password('your_password') where user='root';flush privileges;
(your_password替换成你自己设置的新密码) - 退出MySQL服务:
exit
; - 使用以下命令重新启动MySQL服务:
net start mysql
。
2. root用户没有在localhost上授权
如果操作数据库时抛出如下报错信息:
Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: YES)
在出现这个问题时,我们可以尝试使用以下命令进行授权:
这些命令将会授予root用户在所有的数据库中拥有完全的权限。
3. MySQL服务没有启动
尝试在Windows的服务管理中检查MySQL服务,确保它已经启动。另外,可以尝试运行以下命令启动服务:
4. MySQL服务启动但是监听地址(IP)输入错误
如果MySQL服务已经启动,但是监听地址(IP)输入错误,也会产生上述报错信息。可以修改MySQL配置文件来解决这个问题。
找到hotname.cnf或my.cnf文件,修改以下内容:
这个配置项告诉MySQL服务监听所有的IP地址,允许远程访问。
总结
在使用MySQL时,报错信息是很常见的。通过排除上述四种情况,大部分报错问题都能够解决。希望这篇文章对您有所帮助。