无论是第一次装mysql也好,还是安装了什么新软件,亦或者改了本机or虚拟机的ip,都有可能导致你无法连接mysql数据库。以下将从两点做主要说明:

1、使用navicat连接时报错error 2003: can't connect to mysql server on 'localhost。

无论是对于本错,还是任何其他方面的错,我们首要做的是打开服务,检查mysql服务是否正常启动,对于本错,你会发现压根找不到mysql服务,这就很让人迷茫了,只是隔了一段时间不用就会出现这种错误吗?非也~必然是近期的某些操作的导致的,那么该如何解决这个问题呢?

1)以管理员身份运行命令行

2)进入你的mysql安装目录(需进入\bin这一层)

譬如我的目录为:E:\aboutwork\mysql-5.7.24-winx64\bin>

此时执行:mysqld --install

如果你之前的数据库是可以正常使用的,命令执行完后会提示:service successfully installed

这都是正常操作,此时你打开服务,就可以看到mysql服务已经出现了,

至于百度出的mysql --initialize命令其实是可以不用执行的,前言提到的如果之前的数据库是可以正常使用的,那么mysql目录中是存在data目录的,无需进行其他操作。

Mysql服务也出现了,那么问题也得到了解决?实则不然,当你启动mysql服务是,会发现秒停,根本启不起来,以下将以第二点做解决说明:

2、1)通过任服务器管理启动mysql服务,你会发现服务根本启动不起来,基本是秒停的状态。

2)在命令行执行net start mysql,你会发现它给出如下提示:

3)使用navicat连接时又会报出:1045-access denied for user 'root'@....

其实这就是一个问题,但是这已然给我们提供了搜索的多样性,我们选择任何一种都可能会被引领到不同的路上,也许最后总能找到解决办法,但无疑会浪费我们很多时间,以下我就说说我遇到这个问题是如何解决的,不保证解决所有类似问题,没有深究,只记录这条单行线上的情况。

下次碰到这个问题可以直接查看3306端口是否被占用:netstat -aon|findstr "3306"

我的就是因为3306端口被占用而无法启动服务,杀掉就好了:taskkill /f /pid xxxx

此时再执行就可以发现服务已经恢复正常

emmm....正当我记录完准备了事了,欢欢喜喜的用navicat连一下数据库,一个个大大的弹框弹了出来:1045-access denied for user 'root'@....真是一波刚平,一波又起;那么长话短说,这个只需要更改数据库密码就可以解决。

首先,在mysql安装根目录的my.ini文件中找到[mysqld] 这一项,然后在该配置项下添加 skip-grant-tables 这个配置,然后保存文件。

重新启动mysql服务,在命令行输入:mysql -u root -p,待到输入密码时只会回车就可以进入到数据库中了, 使用 set password for 'username'@'localhost' = password('newpassword') 命令修改新的密码。执行完后发现报错:ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement。则执行下 flush privileges 命令,再执行该命令即可。

重启服务,删除my.ini中加入的那一行配置即可正常连接数据库了。