解决:MySQL 报错:1045 - Access denied for user 'root'@'localhost'(using password YES)

时间:2022-01-24 20:49:44

解决:MySQL 报错:1045 - Access denied for user 'root'@'localhost'(using password YES)

一、前言

今年疯狂迷上了开源,只要看到好的开源项目,就会不顾一切一股脑扎进去研究,五一期间发现一个很好的关于众筹的开源项目,但不巧,这个项目竟然是 PHP 写的,没学过 PHP,自然对这个开源项目毫无头绪了,但我竟然为了这个项目,毅然决定入坑 PHP,于是就出事了...

说时迟那时快, 2 小时入门 PHP,2 小时入门 ThinkPHP,鉴于我一直在研究 Java 的原因,所以不费吹灰之力就顺利入坑。通过了解,PHP 开发必备环境是 PHP、Apache、MySQL以及一个好用的 IDE ,IDE 还是很好找的,我选择了 JetBrains 的 PhpStorm,而其他环境就是集全部功能于一身的 WampServer 了,安装完准备建数据库建表,打开 Navicat ,错误开始...

二、错误描述


MySQL 报错:1045- Access denied for user 'root'@'localhost'(using password YES)


如下图所示:

解决:MySQL 报错:1045 - Access denied for user 'root'@'localhost'(using password YES)


三、错误原因

安装了 WampServer 这个集 PHP 开发环境于一身的神器后,里面的 MySQL 网页管理软件 phpMyAdmin 使得数据库的 root 用户权限发生改变,也可以说是由于两者的密码不一致导致密码错乱有了这个错误(我自己理解),因为 phpMyAdmin 安装完成后的默认密码是空的。

四、错误解决

直接充值密码即可解决数据这个报错问题。

首先,停止掉数据的运行,这个我相信大家都可以做到了,可以直接从管理服务程序中停止,也可以直接在 cmd 命令窗口输入命令 net stop mysql 来停止。

然后进入 MySQL 的安装路径,找到并打开 my.ini 文件,找到 [mysqld] 字段,在这个字段下面增加下面这个语句:

skip_grant_tables


紧接着重启数据库,这个我相信大家也可以做到了,可以直接在管理服务程序中开启,也可以直接在 cmd 命令窗口中输入命令 net start mysql 来开启,进而在命令窗口执行一下命令,重置密码:


update user set password='root' where user='root'



当然,我是直接将密码重置为 root,反正这个密码大家自定义就好,不过要记住密码。

最后就是再次停止数据库的运行,返回前面提到的 my.ini 文件去掉 skip_grant_tables 字段后保存,再次重启数据库就可以成功解决这个 MySQL 的报错了。

五、问题继续

我在第四部完美的解决了命令窗口启动进入数据的这种报错,然后当我重新进入 Navicat 打开本地建立的连接的时候,继续报同样的错误,也就是说错误并没有解决,很纳闷,为啥命令行可以顺利操作数据库不报错,进入 Navicat 客户端就报错呢?

折腾半天,发现在 root 权限错乱而重置密码之后,在 Navicat 中已经建立的连接是不可逆的。

折腾半天,发现解决办法也很简单,要么删除连接后重新建一个连接,当然,删除连接后并不会已经建立的数据库,要么重装 Navicat ,至于选哪一种,自行选择,我都试过,都可以成功解决 Navicat 报这个错误。

六、问题再来

当本地的错误完美解决之后,我打开 phpMyAdmin 网页,竟然报了一个与前面的错误很相似却又有异的错误,错误如下:


1045- Access denied for user 'root'@'localhost'(using password NO)


当我把本地的 phpMyAdmin 配置文件中的密码也设置为 MySQL 数据库的密码后,打开后还是继续报同样的错误,不断打开不断报错,又折腾半天,最后在 * 上找到了解决办法:直接清除浏览器的 Cookie 缓存就可以解决这个问题。也就是说,我本地的配置是没有任何错误的,而打开网页继续报错的原因是之前报错时浏览器已经把 phpMyAdmin 的登录密码缓存到了 Cookie之中。

好了,所有问题完美解决,特此记录。

解决完这个问题我们明白,如果遇到某些错误精心想想,而不是一股脑扎进错误之中研究错误,可能半小时就可以解决问题了,也不至于折腾一个半天后又折腾一个半天咯。

扫描二维码关注微信公众号,了解更多

-----------------------------------------解决:MySQL 报错:1045 - Access denied for user 'root'@'localhost'(using password YES)