背景问题
有天我启动项目,发现项目连接Mysq总是连接不上,查了url、ip、port、用户名和密码都没有错,就是连接不上mysql数据库,后来通过查找资料发现有多个进程占用3306端口。
pid 6016 是mysqld服务
而pid 9672 是一个叫 svchost.exe 的服务
在任务管理器里查找 9672 发现是叫IP Helper的服务,
看了一下这个服务的服务描述:使用 IPv6 转换技术(6to4、ISATAP、端口代理和 Teredo)和 IP-HTTPS 提供隧道连接。如果停止该服务,则计算机将不具备这些技术提供的增强连接优势。
总之,如果你没用到ipv6设备,关掉也可以。
解决方案
请看到文章最后,从根本上解决此问题!!!!
1. 停止IP Helper 服务
右键开始菜单-计算机管理
找到服务与应用程序,双击【服务】,找到IP Helper 服务,右键-属性-
设置启动类型为【手动】,要不然下次开机的时候还是会自动启动,占用到3306端口。
然后我尝试用127.0.0.1去登陆mysql,居然登陆成功,原来只用localhost登陆的,现在用127.0.0.1登陆也成功了,看来造成这个问题的原因也是IP Helper在搞鬼!
2. 删除端口转发解决根本问题
后来我发现另一台电脑IP Helper服务也是开着的,但是没有只能访问localhost,不能访问127.0.0.1的问题,我意识到这不是IP Helper服务的原因。查了几篇资料,最终在一篇文章里收到启发,文章地址:Windows端口转发
可能是我之前添加了3306端口转发的原因,在电脑上修改之后,问题真的解决了,IP Helper 服务也不用停止。具体步骤如下:
查看3306的端口转发
删除或修改3306的端口转发
我把它改成了33061,这样localhost和127.0.0.1都能在本机访问3306端口了。添加和删除端口转发请参考这篇文章: windows电脑使用netsh添加端口转发、设置端口转发和删除端口转发-CSDN博客
至此问题全部解决,启动项目也不会报连接不到Mysql数据库的错误,localhost和127.0.0.1也都能访问3306端口了。