无论是第一次装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中加入的那一行配置即可正常连接数据库了。