【问题标题】:Assign MySQL permission based on DNS name根据 DNS 名称分配 MySQL 权限
【发布时间】:2013-10-27 11:48:39
【问题描述】:

我在 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 的公共虚拟 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 不是静态的,所以我无法在用户表中绑定特定地址。

我能做什么?

【问题讨论】:

  • 我想知道你是如何解决这个问题的。我也面临类似的问题
  • 我很抱歉,但真诚地一年后我不记得我是如何解决的,因为我现在也在另一家公司工作。如果我没记错的话,我在我的天蓝色帐户中创建了一个虚拟网络,并分配了固定的 VNET IP,这些 IP 在机器重新启动时不会改变。之后,我将该信息放入 MySQL 用户表中。对不起,我不能帮助你更多。请看这个链接:michaelwasham.com/windows-azure-powershell-reference-guide/…

标签: mysql azure dns remote-access


【解决方案1】:

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

【讨论】:

  • 我应该添加一个专用的 DNS 机器吗?
  • 由你决定——你可以在你的数据库机器上运行 BIND(或任何当前选择的 DNS 服务),并在两台机器上进行主要/次要设置。根据您的目标(和所需的运行成本),您可以选择为 DNS 运行另一台服务器(我想小型 linux 实例可以处理它,尽管我会运行两个以提高弹性)。
猜你喜欢
  • 1970-01-01
  • 2021-03-05
  • 1970-01-01
  • 2013-01-10
  • 2020-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多