0

我在运行 Ubuntu 12.04LTS 的 Windows Azure 上有两台机器:其中一台运行 MySQL 数据库,另一台运行需要访问数据库的其他进程。除了设计(这是对实际配置的减少)之外,我想知道是否可以为机器 A 分配权限以连接到机器 B 上的 MySQL 5.5 服务器,并在 mysql.user 表中分配其 DNS 名称。

一个简单的例子:

机器A

Runs: application code, webserver
DNS: machineA.cloudapp.net
PUBLIC VIRTUAL IP ADDRESS: 123.456.789.012
INTERNAL IP ADDRESS: 1.2.3.4

机器 B

Runs: MySQL server 5.5
DNS: machineB.cloudapp.net
PUBLIC VIRTUAL IP ADDRESS: 098.765.432.109
INTERNAL IP ADDRESS: 4.3.2.1

从每台机器我都无法 ping 另一台机器,但是

user@machineA:~$ ping machineB.cloudapp.net

正确解析 machineB 的公共虚拟 IP 地址。

在 machineB 上,我执行了以下命令:

  • 连接到 MySQL 服务器
  • 使用 mysql
  • 授予使用权到由“密码”标识的“用户”@“machineA.cloudapp.net”;
  • 将 db_name.* 上的所有权限授予 'user'@'machineA.cloudapp.net';
  • 刷新权限

当我尝试从 machineA 连接到 machineB 的数据库时,我得到以下信息:

ERROR 1130 (HY000): Host [123.456.789.012] is not allowed to connect to this MySQL server

如果我将 'user'@'machineA.cloudapp.net' 替换为 'user'@'123.456.789.012' 它可以在重新启动之前工作。Azure 的虚拟机 IP 不是静态的,因此我无法在用户表中绑定特定地址。

我能做些什么?

4

1 回答 1

0

在您当前的配置中,如果您通过从云服务公开的公共 IP 地址路由流量,您将支付数据费用。创建一个虚拟网络,分配您自己的私有 IP 地址范围,然后运行您自己的内部 DNS。如果任何一台机器重新启动,它应该总是被重新分配旧的 IP 地址(假设在此期间没有其他任何东西被关闭或打开)。将两台机器放在一个云服务中。

于 2013-10-20T09:41:48.020 回答