Mysql 只允许用户从特定的 DNS 连接

Mysql allow user to connect only from specific DNS

我正在使用亚马逊 RDS 和亚马逊 EC2。

我已经为 amazon EC2 配置了负载均衡器,以后我将使用自动缩放。

我想在我的 RDS Mysql 实例中创建用户,该用户只能从特定 DNS 访问 mysql。

例如:我的域 'test.com' 是负载均衡器 DNS 的 CNAME。当我在 mysql 'test-user'@'test.com' 中创建用户并尝试从我的 EC2 实例连接时,我收到一条错误消息: Access denined for user 'test-user'@'这里是我的ec2实例的私有ip'.

所以我不能在 mysql 中使用 ip 地址,因为我要使用自动缩放,亚马逊将创建具有未知 ip 的新实例,并且 mysql 没有解析主机名我的例子。

你有什么想法吗?

已更新:@Frédéric Henri 问题的答案 "do you have security group on your RDS instance ?"

当然可以,我有安全组。但这在这种情况下不合适,因为有了安全组,我可以只允许从我的 VPC 内的实例连接到数据库。我需要将数据库的访问权限授予另一个人,但我想创建具有只读访问权限的用户(仅 select)

需要注意的一件事是,您 can use wildcards 在 MySQL 赠款中,例如 test-user@'192.168.123.*'。您可以授予对您的实例在其中启动的子网的访问权限。

您也可以使用网络掩码,这可能更合适 - 例如test-user@'192.168.123.0/255.255.255.0'。有关详细信息,请参阅 documentation

似乎也可以使用 DNS(根据相同 post),但正如 Michael 所指出的,这与您的负载均衡器的 DNS 名称没有任何关系。我认为它必须是解析为您实例的 IP 地址的 DNS 名称。如果您在授权中使用通配符(例如 test-user@'%.my-autoscaling-instances.mydomain.com' 并且每个自动缩放框都有一个 DNS 条目),这只会对您有帮助。我不确定这种机制究竟是如何工作的,而且我不相信它是一个好方法。