MySQL SQLSTATE Access Denied for User ‘root’@’localhost’错误

MySQL SQLSTATE Access Denied for User ‘root’@’localhost’错误

在使用MySQL数据库过程中,时常会遇到以下报错:

SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)

这个报错信息是告诉我们,当前的用户root在localhost上以密码的方式连接MySQL数据库时被拒绝了。这种报错信息通常出现在以下几种情况中:

  1. root用户密码错误
  2. root用户没有在localhost上授权
  3. MySQL服务没有启动
  4. MySQL服务启动但是监听地址(IP)输入错误

下面我们逐步分析解决这些问题的方法。

阅读更多:MySQL 教程

1. root用户密码错误

使用root用户登录MySQL时,如果发现密码错误,可以尝试使用忘记密码的罚法进行重置。以下为Windows系统重置MySQL密码的步骤:

  1. 打开CMD控制台,切换到MySQL安装目录的bin目录下;
  2. 使用以下命令停止MySQL服务:net stop mysql
  3. 使用以下命令启动MySQL服务:net start mysql --skip-grant-tables
  4. 打开新的CMD窗口,切换到MySQL安装目录的bin目录下
  5. 使用以下命令进入MySQL服务:mysql -u root
  6. 再次输入以下命令进行密码重置:update mysql.user set authentication_string=password('your_password') where user='root';flush privileges;(your_password替换成你自己设置的新密码)
  7. 退出MySQL服务:exit
  8. 使用以下命令重新启动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;
Mysql

这些命令将会授予root用户在所有的数据库中拥有完全的权限。

3. MySQL服务没有启动

尝试在Windows的服务管理中检查MySQL服务,确保它已经启动。另外,可以尝试运行以下命令启动服务:

sudo service mysql start
Mysql

4. MySQL服务启动但是监听地址(IP)输入错误

如果MySQL服务已经启动,但是监听地址(IP)输入错误,也会产生上述报错信息。可以修改MySQL配置文件来解决这个问题。

找到hotname.cnf或my.cnf文件,修改以下内容:

# bind-address=127.0.0.1
bind-address=0.0.0.0
Cnf

这个配置项告诉MySQL服务监听所有的IP地址,允许远程访问。

总结

在使用MySQL时,报错信息是很常见的。通过排除上述四种情况,大部分报错问题都能够解决。希望这篇文章对您有所帮助。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册