在网上众多的博客中的那几种解决办法都没能解决我的问题,球球你们别互相抄了,十篇博客八篇一样。
错误
日志报错端口占用,netstat -ano也找不到有进程占用,修改成3307后还是报端口占用的错误。
原因
Hyper -v占用了3306的端口,导致mysql无法启动。
1.为什么之前可以启动?
因为Hyper占用的端口不是固定的。
2.为什么换了3307也不行?
因为运气不好,3307也正好在。
下图分别是重启两次的端口占用情况
技术不够,运气来凑,只要你运气够好,就不会出现这问题
解决办法
命令行查看端口占用情况
netsh interface ipv4 show excludedportrange protocol=tcp
如果端口被占用了可以用以下办法解决
1.关掉hyper
但是我要用docker,关掉docker无法使用
2.排除端口占用
1.关掉hyper,重启计算机
2.管理员身份启动cmd窗口输入以下命令
netsh int ipv4 add excludedportrange protocol=tcp startport=3306 numberofports=1
3.打开hyper
再次查看端口占用情况时发现3306已经被排除
解决思路(有兴趣可以看看)
mysql启动错误或者其他错误可以先去看看错误日志,在data目录下.err后缀的文件,在得知识端口占用后先去查看端口占用,此时发现端口并没有被进程占用,那可能就是系统问题而不是mysql的问题了,通过端口占用的关键字去找解决办法,最后发现是hyper的问题,找到原因后就很好解决了。
总结
一直以来,遇到各种bug或者各种错误都是无脑粘贴报错信息去百度,虽然大部分情况下这样确实很快,但是可能自己并不知道是什么原因。如果出现了比较少见的错误,可能就是大量的阅读重复的博客还无法解决。所以有时间的话还是看看底层的日志,看看底层的源码,不要畏惧和偷懒。虽然对初级程序员来说确实很吃力,但是吃力又不代表一点都看不懂。毕竟资深程序员也是从初级程序员过来。共勉