MySQL – 无法从本地networking连接,但可以从任何其他IP连接

面对一个非常奇怪的问题。

原来的要求是有一个开发服务器,可以从我们的办公室在瑞典和印度访问。

在我们的斯德哥尔摩服务器上,我创build了一个新的Ubuntu VM(Ubuntu 15.04,64位),并给它一个IP 192.168.3.127。 我安装了MySQL(5.6.24),并将/etc/mysql/mysql.conf.d/mysqld.cnf中的bind-address修改为0.0.0.0

我在路由器上设置端口转发,将3306转发到192.168.3.127,然后使用创build一个新的数据库

CREATE DATABASE mydatabase;

我为用户授予权限

GRANT ALL PERMISSIONS ON mydatabase.* to 'someuser'@'%' IDENTIFIED BY 'supersecretpassword!';

现在,开发人员可以使用瑞典办事处的公共IP从印度连接,但是瑞典办事处的开发人员无法连接到服务器。 他们可以使用本地IP(192.168.3.127)连接到它,但不使用公共IP。

我不知道什么是错的。 有任何想法吗?

维韦克

如果您正在从外部networking向内部networking进行DNAT,则外部用户可以像使用公共IP一样正确访问内部服务器。 公共IP被NAT到私有IP并被转发到服务器。

但是,除非NAT固定,否则您的内部用户将无法使用公共IP访问同一台服务器。 应该有另一个DNAT规则在公共IP转发到服务器之前内部翻译。

另一种可能的解决scheme是使用DNS名称并定义DNS视图。 创build一个将名称映射到私有IP的内部视图,并创build一个将名称映射到公有IP的外部视图。 所以,你最终会在内部和外部使用相同的名称。