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

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

连接: https://pan.baidu.com/s/1slwQxVB 密码: r737mysql

我navcat的版本:sql



然而链接数据库的时候发现报错:数据库


因而没办法,只好去网上找解决的办法。windows

然而找了一圈,并无一个可以解决我这个问题的(由于是我我的的缘由)。tomcat

不过好在问题已经解决,因此在这里总结一下:ide

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

讲道理这种状况其实基本上不应遇到,由于咱们在安装mysql以后,root实际上是有最高权限的,并且不多会有人去修改root的权限。spa

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


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是不背的,仍是得我背……