admin 管理员组

文章数量: 1184232

介绍

本文将演示windows、mac、linux系统下,让docker容器连接宿主机的mysql。

通用命令

1.创建数据库zipkin,然后创建表:SQL文件

2.注意添加帐号权限,可以在任何ip上访问。

  1. all privileges包含查询、插入、修改等权限,也可:insert,delete
  2. *.*的第一个*代表所有的数据库,第二个*代表所有的表
  3. root是你登录的账号
  4. %代表所有的ip都可以访问数据库,也可以指定IP,如:127.0.0.1
  5. youpassword代表你访问数据库的密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;

windows、mac

宿主机IP

不同于linux,windows和mac都是通过host.docker.internal去连接宿主机。

当你启动了一个web服务,在宿主机localhost:8080/hello的话,就可以通过下面的方式访问。连接mysql把localhost改成host.docker.internal即可。

 $ docker run --rm -it alpine sh
 $ apk add curl
 $ curl http://host.docker.internal:8080/hello
 $ exit

linux

获取到宿主机的ip
docker inspect <container-id-or-name> | grep Gateway
"Gateway": "",
            "IPv6Gateway": "",
            "Gateway": "172.18.0.1",
            "IPv6Gateway": "",

对于docker应用程序内部,MySQL的指向宿主机的172.18.0.1:3306

注意MySQL监听

1.查找mysql文件

sudo find / -name myf

2.修改myf 配置
找到bind-address修改成0.0.0.0(有安全问题,仅测试使用)或172.18.0.1。

本文标签: 宿主 MySQL docker Linux Mac