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

Can't connect Docker Wordpress container to MySQL on host

我有一个 Ubuntu 虚拟机,我在 Mac 上启动了它。在 VM 中,我安装了 MySQL 和 Docker,我正在尝试 运行 来自 Wordpress 图像的容器并连接到主机 vm 上的 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

我已经替换了分配给主机虚拟机的 IP 地址以及相应的用户、密码和数据库名称环境变量。容器启动但不久后关闭,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

这些重复几次然后终止。

这应该可行吗?如果是这样,我需要使用什么作为主机 vm 的 IP 地址,我是否需要配置其他任何东西?

我假设您在 mysql 上有默认设置。

您正在尝试从不同的网络连接到您的 mysql。这在 mysql.

中默认被禁止

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

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

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

重新启动您的 mysql 服务

service mysql restart

允许用户从远程网络连接。连接到 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';