2013-10-18 45 views
0

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

一个简单的例子:

机器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了一个,但

[email protected]:~$ ping machineB.cloudapp.net 

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

machineB上我执行以下命令:

  • 连接到MySQL服务器
  • 用mysql
  • 赠款的使用上转换为'user'@machineA.cloudapp.net''由'password'标识;
  • 将db_name。*的所有权限授予'user'@'machineA.cloudapp.net';
  • flush privileges的

当我尝试从machineA的连接到machineB的数据库中,我得到如下:

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

如果我取代 'user'@'machineA.cloudapp.net' 与“用户'@'123.456.789.012'它的作品直到一个重新启动。 Azure的虚拟机IP不是静态的,所以我无法绑定用户表中的特定地址。

我该怎么办?

+0

我可以知道你是如何解决这个问题的。我也面临类似的问题 – Suriya

+0

我很抱歉,但经过一年的真诚,我不记得我是如何解决的,因为我现在也为另一家公司工作。如果我没有记错,我在Azure帐户中创建了一个虚拟网络,并为机器重新启动时分配的固定VNET IP分配了不变的内容。之后,我把这个信息放入MySQL用户表中。对不起,我帮不了你。 请参阅以下链接:http://michaelwasham.com/windows-azure-powershell-reference-guide/setting-static-ip-addresses-in-a-virtual-network/ – Andrea

回答

0

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

+0

我应该添加专用的DNS机器吗? – Andrea

+0

由您决定 - 您可以在两台机器上使用主/辅助设置在数据库中运行BIND(或任何当前选择的DNS服务)。根据您的目标(以及所需的运行成本),您可以选择仅为DNS运行另一台服务器(我认为小型Linux实例可以处理它,尽管我会运行两个恢复能力)。 –