一、前言
今年疯狂迷上了开源,只要看到好的开源项目,就会不顾一切一股脑扎进去研究,五一期间发现一个很好的关于众筹的开源项目,但不巧,这个项目竟然是 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)
如下图所示:
# 三、错误原因
安装了 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 数据库的密码后,打开后还是继续报同样的错误,不断打开不断报错,又折腾半天,最后在 StackOverFlow 上找到了解决办法:直接清除浏览器的 Cookie 缓存就可以解决这个问题。也就是说,我本地的配置是没有任何错误的,而打开网页继续报错的原因是之前报错时浏览器已经把 phpMyAdmin 的登录密码缓存到了 Cookie之中。
好了,所有问题完美解决,特此记录。
解决完这个问题我们明白,如果遇到某些错误精心想想,而不是一股脑扎进错误之中研究错误,可能半小时就可以解决问题了,也不至于折腾一个半天后又折腾一个半天咯。
扫描二维码关注微信公众号,了解更多
-----------------------------------------