docker容器中连接宿主机MySQL

容器中连接宿主机MySQL,根据宿主机系统的不同,操作方式也不同.

Linux:
在宿主机下执行ifconfig,查询到docker0网卡的ip,即可在容器内部连接

Windows/Mac:
系统环境可能影响使用方式,以下方式可分别尝试:

在容器内ping 宿主机内网IP
在容器内ping host.docker.internal

哪个可以ping通,就使用哪个作为MySQL的主机地址.
有些Windows系统可能有IP能ping通但连不上,host.docker.internal ping不通的情况,这种情况可以在php容器中,修改/etc/hosts文件,将宿主机ip和host.docker.internal做一个映射试下,不过此方式每次重启容器都需要重新修改.
MySQL默认禁止外部网络访问,因此需要将宿主机中的MySQL中设置允许外网访问,设置时需注意自己的MySQL版本,5.x和8.x有细微差别,以下内容作为参考
运行宿主机Mysql命令行

 mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
 mysql>flush privileges;
// 其中各字符的含义:
// *.* 对任意数据库任意表有效
// "root" "123456" 是数据库用户名和密码
// '%' 允许访问数据库的IP地址,%意思是任意IP,也可以指定IP
// flush privileges 刷新权限信息