必威体育Betway必威体育官网
当前位置:首页 > IT技术

Navicat for MySQL破解,以及连接数据库出现错误:1045-Access denied for user 'root'@'localhost'或者@“ip”解决方法

时间:2019-08-07 15:41:03来源:IT技术作者:seo实验室小编阅读:85次「手机版」
 

access denied

在这个问题纠结了好些天,最后在这篇博客找到解决方法,转载记录下

https://blog.csdn.net/qq_36735409/article/details/78032144

好久没动自己windows电脑上的mysql数据库了,今天用的时候发现navcat到期了,网上找了一个破解文件,挺好用,分享一下:

连接数据库的时候发现报错:

于是没办法,只好去网上找解决的办法。

然而找了一圈,并没有一个能够解决我这个问题的(因为是我个人的原因)。

不过好在问题已经解决,所以在这里总结一下:

1、出现这个问题的原因之一是权限的问题,也就是说你的电脑可能没有权限访问mysql数据库

讲道理这种情况其实基本上不该遇到,因为我们在安装mysql之后,root其实是有最高权限的,而且很少会有人去修改root的权限。

这个问题的解决方法就是授权。授权命令大概是这样的:

grant all privileges on *.* to 'root'@'我电脑的ip地址' identified by '密码';

如果你不是用root登陆的,那么就把root改成你的登陆名。

有的同学可能不知道这个命令往哪里写,

开始——运行——输入“cmd”——点击确定

这样就打开了我们的命令提示符界面:

然后找到我们的mysql的安装目录,将目录复制到命令提示符中。如图:

(cd 是什么意思我想不用特别解释了吧)

然后进入目录下的bin文件:

然后输入 mysql -u root -p 如图:

在Enter password: 后面输入你的密码。点击回车。

如果密码正确,会出现Welcome 的字符。

如图:

这样就成功进入了mysql数据库。

当然如果你已经设置了环境变量,那么不用进入mysql目录,直接输入mysql -uroot就可以了。

当然,你也可以直接打开mysql下的bin窗口,然后按住shift+鼠标右键,选择“在此处打开命令窗口”,就可以直接在bin目录下打开命令提示符窗口了。

接下来就简单了,直接将上面的代码修改一下就可以用了。比如我的电脑的ip地址是:192.168.0.103,我的root密码是:123456,那么我就可以将授权的语句改成:

grant all privileges on *.* to 'root'@'192.168.0.103' identified by '123456';

如果你是本地登录的,那么:

grant all privileges on *.* to 'root'@'localhost' identified by '123456';

当然你也可以直接改成这样:

grant all privileges on *.* to 'root'@'%' identified by '123456';

就可以给所有ip都设定root登陆了。

如果授权成功,会有Query OK的提示。

然后:

flush privileges;

这个是刷新授权的意思,如果没有这句话,授权可能无法立刻生效。

exit;

这个是退出的意思。

授权完成以后,你可以再尝试一下登陆,看看能不能登上。反正我登陆不上。

2.需要重新设置root密码(忘记root密码)。

忘记密码的情况还是比较常见的,如果你忘记了密码,用navicat登陆的时候也会有这个提示,那么就需要修改root密码了。

这一步我也从网上找了一些方法,然后还是没有解决问题,最后才知道是被自己给坑了——

第一步:找到mysql的根目录,找到根目录下的bin文件,按住shift键,右击鼠标,选择:在此处打开命令窗口。如图:

在命令行输入 net stop mysql 来停止当前运行中的mysql服务。

然后坑来了:

提示没有启动mysql服务。

可是我刚刚是登陆进去的,我知道是启动了的,于是net start mysql 启动一下:

服务无法启动……

好在还可以在管理里面启动服务:

计算机——右键——管理——服务和应用程序——服务——MySQL——启动:

出现这个提示。而且mysql后面紧跟的mysql57,mysqla又是什么东西

看不明白,只好去网上找答案,网上也有说要找my.ini 文件的,也有说跟data文件夹有关的。然后我又看了一眼自己的mysql根目录:

真的没有data文件夹,而且连my.ini配置文件都没有……哇!我都怀疑是不是装了一个假的数据库。又去bin文件夹里找,也没有my.ini文件。

然后又看到网上有大神说5.7版本以后的mysql好像就是没有data文件夹,解决办法就是,要么从别的数据库拷贝一个过来,要么用命令提示符重新生成一个data文件夹。

拷贝的当然不合适,最好还是用语句生成一个。

生成语句:mysqld --initialize-insecure --user=mysql

这个语句需要执行一段时间,执行完成之后,目录已经生成了一个data文件:

这下应该没有什么问题了吧!net start mysql:

还是启动不了……

难道是没有my.ini的原因?网上找了一下,my.ini是配置文件,不可能没有的。如果没有的话mysql是不能正常工作的。

而我的mysql是可以正常工作的,原因就是我刚刚上面修改权限的时候还用123456这个密码登录进去,修改成功了……

我突然想到我可以直接进入mysql,跟刚刚修改权限一样,修改一下密码就可以了,为什么非得纠结在这个net start mysql 呢?

于是 mysql -u root -p 登陆数据库。

use mysql;

update user set password=password('123') where user = 'root';

如图:

报错:不知道'password'是什么。

原来现在password已经不叫password了,而是叫 authentication_string:

update user set authentication_string=password('123') where user = 'root';

然后刷新:

flush privileges;

关闭:

quit;

现在密码已经改成123了,现在你可以试一下用root和123登陆,看看能不能在navicat登陆上。反正我是没登上。

我已经绝望了。

出去吸了一支烟。

回来:

net start mysql57:

请求的服务已经启动。

难道我的电脑装了两个mysql,导致冲突了???于是我又找到计算机管理,把mysql57服务停止,再启动mysql服务。没办法,又把mysql57下面

的那个可疑的mysqla服务停止,然而,

还是启动不起来。

于是我右键查看mysql的属性:

可执行文件路径就是我一直在用的这个路径。

现在最大的疑点就是my.ini了。百度找了一圈,发现它竟然在progrAMData里:

为了验证这个ini文件究竟是不是mysql的文件,在my.ini 文件中找到[mysqld]字段,

并在下面添加skip-grant-tables,如图:

然后回到命令提示符:

mysql -u root -p

不输入密码,直接回车,发现也进入了mysql.

(通过这个方法,在不知道密码的情况下进入mysql,然后修改root的密码,

update user set authentication_string=password('123') where user = 'root';

步骤同我上面介绍的修改密码的方法一样。)

也就是说这个my.ini就是mysql的ini。

于是我又回到管理,找到mysql57的路径:

"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7\my.ini" MySQL57

于是我又看了一眼mysqla的路径:

G:\phpstudy\mysql\bin\mysqld.exe MySQLa

哇,我好像突然明白到底是什么原因了……

于是我把mysqla服务停止,然后重新用navicat登陆mysql:

成功了……

相关阅读

MYSQL数据库爆库爆表爆字段

MySQL版本大于5.0时,有个默认数据库information_schema,里面存放着所有数据库的信息(比如表名、 列名、对应权限等),通过这个数据库,

python连接pymssql报OperationError:20009...错误(SQL s

在数据库配置管理器中,打开TCP/IP,改为启用,双击可查看端口号。

解决上传文件时 nginx 413 Request Entity Too Large

一个使用Tomcat 发布的站点,使用Nginx做了代理,在上传文件时发生以下错误:<html> <head><title>413 Request Entity Too Large</titl

Mysql的Rownum使用示例

1,显示当前查询结果的行号SELECT @rownum := @rownum +1 AS rownum, e.* FROM (SELECT @rownum := 0) r, employee

谷歌无法启动更新检查(错误代码为4: 0x80070005-syste

Chrome 更新出现:无法启动更新检查(错误代码为 4: 0x80070005 &mdash; system level)是什么原因?应该怎么解决呢?Google浏览器Chrome更

分享到:

栏目导航

推荐阅读

热门阅读