windows的docker内采用容器方式部署了php项目,项目访问windows的phpstudy内mysql提示被拒绝,如何出坑?

windows10安装docker,已创建 wnmp环境的多个容器运行正常,但通过127.0.0.1来访问本机phpstudy上的mysql提示拒绝访问。phpstudy是安装在windows10上,没有在docker容器里,

具体是这样的:本地原先用phpstudy环境开发,然后现在换成了docker方式,但mysql还是想用原来的,懒得迁移,我将项目文件夹挂载进在php容器的项目目录下,测试访问容器内的mysql正常(mysql容器防止和phpstudy的mysql端口重复,所以特意暴露的是3307:3306端口),最后也把docker内mysql的容器删除了,重启所有容器,然后尝试让项目访问在wndows10下的phpstudy内原先mysql,防止容器删除后数据出现问题(虽然有挂载),我遇到的问题是,在容器的项目内通过127.0.0.1或localhost来访问本机(windows下的phpstudy)后无法访问3306端口,被拒绝了,一开始我以为是phpstudy数据库的权限问题,所以修改了权限为所有人(如下图),但是发现还是连接不上,是我在容器内用127.0.0.1或localhost来访问本机phpstudy下的mysql的ip不对吗?哪位有遇到同样情况?如何解决呢?

img

你直接用 ip访问 就可以了

就是网段的问题,容器有一个设置是容器和宿主机使用同一个网络,应该是host模式,使用--net=host指定,这样容器里面的127.0.0.1就可以访问了

不能用127.0.0.1访问,需要通过访问Windows的IP地址

docker容器会有自己的ip,你在容器内用127.0.0.1访问的是docker内的,但是你docker中的mysql已经不存在了,所以你没法访问,你必须用windows的IP才行

使用 host.docker.internal 地址访问