无法将Docker WordPress容器连接到主机上的MySQL

我有一台在我的Mac上启动的Ubuntu VM。 在VM中,我安装了MySQL和Docker,并且试图从Wordpress图像运行容器,并在主机虚拟机上连接到MySQL。 WordPress的图像文件说,使用:

$ docker run --name some-wordpress -e WORDPRESS_DB_HOST=10.1.2.3:3306 \ -e WORDPRESS_DB_USER=... -e WORDPRESS_DB_PASSWORD=... -d wordpress 

我已经在分配给主机vm的IP地址以及相应的用户,密码和数据库名称环境variables中进行了replace。 集装箱出来,但在短时间后closures,docker日志显示:

 vagrant@docker-blogs:/vagrant$ docker logs je-wordpress WordPress not found in /var/www/html - copying now... Complete! WordPress has been successfully copied to /var/www/html Warning: mysqli::mysqli(): (HY000/2002): Connection refused in - on line 10 MySQL Connection Error: (2002) Connection refused Warning: mysqli::mysqli(): (HY000/2002): Connection refused in - on line 10 MySQL Connection Error: (2002) Connection refused 

这些重复几次然后终止。

这应该是可行的吗? 如果是这样,我需要使用什么作为主机虚拟机的IP地址,我需要configuration什么?

我假设你有该默认设置的MySQL。

您正尝试从不同的networking连接到您的MySQL。 这在MySQL中是默认禁止的。

查找mysql的设置: grep bind-address /etc/mysql/my.cnf

grep skip-networking /etc/mysql/my.cnf

注释掉它们( #bind-address ,…),或删除它们。

重启你的mysql服务

service mysql restart

允许用户从远程networking连接。 连接到MySQL并执行:

GRANT ALL ON database.* TO user@'xxx.xxx.xxx.xxx' IDENTIFIED BY 'PASSWORD';

更改数据库,用户,xxx.xxx.xxx.xxx为您正在连接的IP和密码。

要启用IDontGiveADamn模式,只需执行

GRANT ALL ON *.* TO root@'%' IDENTIFIED BY 'monkey';