天天看点

mysql5.6登陆时,1045:Access denied for user 'root'@'localhost'

今天需要装一个MySQL数据库,到官网下载了mysql-installer-community-5.6.17.0.msi这个安装文件,在我的win7上安装好。

但是在使用Navicat登陆时出现“1045:Access denied for user 'root'@'localhost'”这种错误。

到网上找了很多例子在失败过几次之后,终于根据网上的方法,再根据自己MySQL的情况,把这个问题解决了。

解决过程:

1、以管理员身份运行CMD(防止某些指令只能管理员识别),然后切换目录到我的MySQL安装目录的bin目录下

C:\Windows\System32>e:

E:\>cd MySQL\MySQL Server 5.6\bin

E:\MySQL\MySQL Server 5.6\bin>

2、键入指令:mysqld install MySQL --defaults-extra-file="E:\MySQL\MySQL Server 5.6\my-default.ini"。注意,my-default.ini是MySQL安装目录下的服务初始化要用到的文件。5.6版本的MySQL是这个文件名,以前得版本文件名好像是my.ini。如下示例,可能会显示下面粗体的结果提示,也可能只会提示“Service successfully installed.”。这些都表明我们的MySQL数据库安装的没有问题

E:\MySQL\MySQL Server 5.6\bin>mysqld install MySQL --defaults-extra-file="E:\MyS

QL\MySQL Server 5.6\my-default.ini"

The service already exists!

The current server installed: "E:\MySQL\MySQL Server 5.6\bin\mysqld" --defaults-

extra-file="E:\MySQL\MySQL Server 5.6\my-default.ini" MySQL

Service successfully installed.

3、修改my-default.ini(my.ini)文件,在[mysqld]下面,加上skip-grant-tables这个配置参数:

mysql5.6登陆时,1045:Access denied for user 'root'@'localhost'

4、重新以管理员身份打开一个CMD,键入:net stop mysql,关闭mysql服务

C:\Windows\System32>net stop mysql

MySQL 服务正在停止..

MySQL 服务已成功停止。

然后,再键入net start mysql,启动mysql服务。

当然,如果你没有启动mysql服务,这里只需要启动一下就可以了,目的是为了重启服务重新读取上一步的ini文件的改动。

当然,启动mysq服务有很多方式,如控制面板里的服务、oracle的MySQL notifier都是可以的。

5、启动mysql后,继续在bin目录下的CMD中键入:mysql -u root -p

mysql5.6登陆时,1045:Access denied for user 'root'@'localhost'

6、登陆成功后,分别键入:

user mysql;

UPDATE user SET Password=PASSWORD('xxooxxoo') where USER='root';

flush privileges;

这是为了修改你的root密码,“”xxooxxoo当然是你的新密码咯,刷新privileges,最后quit退出。

7、将之前在ini文件中加入的“skip-grant-tables”参数注释掉,或者删除。

8、最后一步,重启mysql,如:net stop ysql、net start mysql

这样MySQL就可以正常登陆,使用了。以上就是解决这个问题,我的步骤。至于其他怪异情况,还没有遇到,且不提。

继续阅读