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

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

链接: https://pan.baidu.com/s/1slwQxVB 密码: r737

我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:


成功了……
万恶的phpstudy……
phpstudy的截图:



它是自带一个tomcat和一个mysql的。我好久之前安装过一个,后来忘了。就是因为有两个mysql服务,导致我的navicat一直在连pnpstudy的mysql。
当然这个锅phpstudy是不背的,还是得我背……








相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页