因此,我通常可以通过 Docker 运行一个容器来联系我的本地主机--add-host=localbox:192.168.59.3
. ping localbox
工作得很好。问题是,我似乎无法从 MySQL 服务器获得响应。mysql -h localbox
,它在 docker 容器外部工作得很好,这让我很感兴趣ERROR 2003 (HY000): Can't connect to MySQL server on 'localbox' (111)
从内部。
我已经搞定了GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
我已经添加bind-address = 0.0.0.0
进入/etc/my.cnf。这些都没有帮助。是什么赋予了?
上下文:我在 OS X Yosemite 上通过 boot2docker 运行所有这些。
所以,事实证明这是自制程序的错误,其设计决策确实值得怀疑。您可以通过运行推荐的命令在 homebrew 中启动 mysql-serverlaunchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
。但是,当检查这个文件时,您会发现绑定地址是硬编码的!
<array>
<string>/usr/local/opt/mysql/bin/mysqld_safe</string>
<string>--bind-address=127.0.0.1</string>
<string>--datadir=/usr/local/var/mysql</string>
</array>
因此,无论您在任何 my.cnf 文件中执行什么操作,它都将始终绑定到 127.0.0.1,并且您永远无法从容器进行查询。我的修复方法是直接编辑此文件而不提供绑定地址,这样我们就可以让 /etc/my.cnf 为我们做这件事。或者,虽然我不推荐它,但您可以直接在此文件中更改绑定地址。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)