我在运行 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 不是静态的,因此我无法在用户表中绑定特定地址。
我能做些什么?