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)
在出现这个问题时,我们可以尝试使用以下命令进行授权:
mysql> grant all privileges on *.* to 'root'@'%' identified by 'your_password' with grant option;
mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'your_password' with grant option;
mysql> flush privileges;
这些命令将会授予root用户在所有的数据库中拥有完全的权限。
3. MySQL服务没有启动
尝试在Windows的服务管理中检查MySQL服务,确保它已经启动。另外,可以尝试运行以下命令启动服务:
sudo service mysql start
4. MySQL服务启动但是监听地址(IP)输入错误
如果MySQL服务已经启动,但是监听地址(IP)输入错误,也会产生上述报错信息。可以修改MySQL配置文件来解决这个问题。
找到hotname.cnf或my.cnf文件,修改以下内容:
# bind-address=127.0.0.1
bind-address=0.0.0.0
这个配置项告诉MySQL服务监听所有的IP地址,允许远程访问。
总结
在使用MySQL时,报错信息是很常见的。通过排除上述四种情况,大部分报错问题都能够解决。希望这篇文章对您有所帮助。
极客教程