MySQL端口号为零且连接Navicat出现报错[2002]
- 目录
- 问题原因
- 报错分析
- 解决过程
- 个人心得体会
- 参考博文
目录
在刚解决完MySQL80服务无法开启的问题后,我满怀期待地打开Navicat,本以为可以连接上本地数据库,出乎意料,上来就给我一个报错[2002],让我手足无措。
问题原因
由于移动了文件时许多路径都相继改变,而我在恢复时又将data文件内容进行删除,并对mysql进行初始化,这就导致我的MySQL文件的配置出现乱子,即my.ini文件还是存在问题和原因。
以上是初步分析。可以从这次的教训中得到一个总结:那就是 “牵一发而动全身” MySQL安装完后就不要随意动了,其实际所占内存并不会太多,同时C盘里的文件很多都是系统自带的文件包括驱动之类以及软件自身所需的环境。
报错分析
首先是我们进入Navicat还是报[2002]错误:
或则是这样的:Can’t connect to server on ‘127.0.0.1’(10061) 两者相同都是本地数据库 但是也有些不同,具体可以参考:localhost和127.0.0.1的关系
报错内容是,无法远程连接数据库,错误的来源有很多:1.mysql服务没有启动;2.mysql的端口号错误等很多原因。
解决过程
进行初步判断,先”win+R” 输入”cmd”,进入命令行窗口,登录mysql再查看端口号,输入如下指令:
mysql -u root -p
输入你的mysql登录密码
show global variables like ‘port’; //查看端口号,需要注意别忘记带分号“ ;“
进入后发现端口号显示的是零,而我们知道my.ini即配置文件的端口号默认是:3306;难道只是端口号被换掉那么简单吗,带着疑问,我重新打开Navicat 对本地数据库进行编辑连接操作,即点击你要连接的数据库,然后右键 会弹出”编辑连接“操作,我把端口号改为0,结果很明显,还是’报错啦‘ ——(这里引用英雄哥的台词)
显然应该是my.ini文件没有生效,我对端口号为零的问题又进行了搜索查询,在如下这边博文里是给出这样的分析:无法远程连接且端口号为0;
我先试了试情况三,进行了一个初步排查:
发现果不其然 我的skip_networking 状态是:ON; 但是我的my.ini文件里是将skip_networking 文件注释掉的,这就令我百思不得其解;
这里发生了一个小插曲,因为看到大部分博文里都提到my.cnf这个文件,我以为是另一个配置文件,一顿查找,后来发现my.cnf这个文件的内容怎么和my.ini文件这么像,于是一查: 发现原来 在linux操作系统下MySQL的配置文件是.cnf后缀,而在Windows下是.ini后缀。my.ini和my.cnf的区别
果然,学习之路还是很漫长;
在了解这些后,我又仔细看了一下我的my.ini文件,确实是注释掉了并且端口号默认也是3306。
这是我的my.ini文件,友友们可参照修改和对照。此外这里还有一篇博文是详述skip_networking的:skip_networking,好奇的友友可以看看,写的很细节到位。
最后看到这篇博文,重启服务,我想可能是我在移动完后路径后,my.ini文件没有重新对服务进行配置,于是我选择重启,即打开任务管理器,找到MySQL80,右击选择重启服务。
当我再次连接MySQL,查看端口和skip_networking时发现终于回归正常:
同时打开Navicat,也可以正常连接本地数据库了。
最后问题得以解决。
个人心得体会
在初入MySQL这个领域,建议友友们先不要随便乱动文件,同时对于报错问题,勤搜索,肯定会有解决办法,同时享受解决问题的喜悦和激动,并做好相关内容的总结,对于出现的相关指令或则专业名词进行深入的一个了解,知其然更要知其所以然。
同时很感谢网络给予我们这些编程后辈的资源以及平台的依托,帮助我们提高技能水平,分享交流经验,解决问题,达到知识共享。
参考博文
- 重启服务
- skip_networking
- my.ini和my.cnf的区别
- 无法远程连接且端口号为0
- localhost和127.0.0.1的关系