我有一台我在Mac上旋转的Ubuntu虚拟机。在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
我已经用分配给主机vm的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
这些重复几次然后终止。
这应该可行吗?如果是这样,我需要使用什么作为主机虚拟机的IP地址,我是否需要配置其他任何东西?
答案 0 :(得分:1)
我假设您在该mysql上有默认设置。
您正尝试从DIFFERENT网络连接到您的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';
更改您要连接的IP的数据库,用户,xxx.xxx.xxx.xxx,以及PASSWORD。
要启用IDontGiveADamn模式,只需执行
即可 GRANT ALL ON *.* TO root@'%' IDENTIFIED BY 'monkey';