专栏首页IT 指南者专栏解决:MySQL 报错:1045 - Access denied for user 'root'@'localhost'
原创

解决:MySQL 报错:1045 - Access denied for user 'root'@'localhost'

一、前言

今年疯狂迷上了开源,只要看到好的开源项目,就会不顾一切一股脑扎进去研究,五一期间发现一个很好的关于众筹的开源项目,但不巧,这个项目竟然是 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之中。

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

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

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

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • PHP 笔试 + 面试题

    本章主要介绍常见的 PHP 笔试 + 面试题,包括: ---- 基础及程序题 数据库技术题 综合技术题 项目及设计题 ---- 基础及程序题 [1] 写一...

    echobingo
  • PHP 数组

    本章主要介绍 PHP 数组的一些应用: <?php // 带数组下标的数组 $paper[] = "Ma"; $paper[] = "Hao"; for ($...

    echobingo
  • PHP相关概念及配置

    php MIME,http,html MIME:MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型 ...

    若与
  • redis用法分析redis基本介绍PHP操作redis服务器python使用redis总结

    redis基本介绍 redis也是一个内存非关系型数据库,它拥有memcache在数据存储上的全部优点,而且在memcache的基础上增加了数据持久性功能,re...

    若与
  • 趣文 | 程序员们,都进来看看编程语言之父都有谁

    1、PHP PHP之父,Rasmus Lerdorf,1994年,为了要维护个人网页而制作的一个简单的用Perl语言编写的程序。这些工具程序用来显示 Rasmu...

    小莹莹
  • PHP rabbitmq Work queues

    RabbitMQ是流行的开源消息队列系统,用erlang语言开发。RabbitMQ是AMQP(高级消息队列协议)的标准实现。如果不熟悉AMQP,直接看Rabbi...

    零月
  • 最近 Python 有点火? 给你 7 个学习它的理由!

    Python 是一门更注重可读性和效率的语言,尤其是相较于 Java,PHP 以及 C++ 这样的语言,它的这两个优势让其在开发者中大受欢迎。 诚然,它有点老了...

    小莹莹
  • 适用于 PHP 开发人员的 Python 基础知识

    您是一名 PHP 开发人员。您在过去 五年(或更长时间)中可能一直都编写应用程序,您已经将许多想像变成了可能 — 电子商务系统、简单内容管理系统、Twitte...

    小莹莹
  • 实用的 PHP 技术

    本章主要介绍一些实用的 PHP 技术应用: <?php echo "<pre>"; printf("The result is %.2f\n", 2.345)...

    echobingo
  • PHP 基础之 PHP 函数与对象

    本章主要介绍 PHP 的函数与对象的一些应用: <?php // PHP 函数与对象 print("test"); // 或 print "test"...

    echobingo

扫码关注云+社区

领取腾讯云代金券