根据DNS名称分配MySQL权限

时间:2013-10-18 15:06:51

标签: mysql azure dns remote-access

我在Windows Azure上有两台运行Ubuntu 12.04LTS的计算机:其中一台运行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的PUBLIC VIRTUAL IP ADDRESS。

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

  • 连接到MySQL服务器
  • 使用mysql
  • 的使用授予'user'@'machineA.cloudapp.net',由'password'标识;
  • 将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'@'123.456.789.012'替换'user'@'machineA.cloudapp.net',它可以直接重新启动。 Azure的虚拟机IP不是静态的,因此我无法绑定用户表中的特定地址。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

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