我有一个db服务器db.example.com CNAME到它的外部ec2域ec2-some-ip.aws.com
我有一个客户端ec2-another-ip.aws.com试图连接到我的db.example.com。我授予特权:
grant all privileges on *.* to 'some_user'@'ec2-another-ip.aws.com';
在客户端尝试:
mysql -u some_user -h db.example.com
只得到:
ERROR 1130 (00000): Host 'my-client-internal-mac.compute-1.internal' is not allowed to connect to this MySQL server因此,它显然将其外部域映射到internet域。那么,我如何使mysql允许我的客户在下面的限制。
。
发布于 2010-07-19 17:18:09
简单的方法是授予对someuser@%的访问权限,这意味着“来自任何主机的用户”。这降低了安全性,但它可能足够好,取决于您的设置。
特别是,如果您的EC2安全设置不允许在端口3306上进行公共访问,这应该是可以的。EC2防火墙只允许从您的帐户启动的计算机访问。
发布于 2010-11-30 19:06:46
ec2防火墙通过/拒绝的具体情况取决于安全组的设置。希望默认安全组被配置为拒绝来自不属于同一安全组的任何计算机(ec2或internet)的所有通信量。无论如何,如果您不太关心在这里寻找一个很好的解释,那么很容易错误地将ec2 mysql db打开到所有的internet上。
我也在努力解决同样的问题: ec2 mysql客户端通过其私有ip连接到ec2 mysql服务器。即使您将弹性ip分配给mysql客户端,也于事无补,因为通信是通过私有ip完成的,每次重新启动时都会更改。也许可以强迫mysql客户端通过其公共ip接口进行连接。这似乎是可能的,但在另一方面,这可能是昂贵的,因为通过公共ips在ec2的通信是付费的!
因此,目前,我的db帐户可以从internet上的任何主机(某某用户@%)访问,并且安全性委托给ip/安全组访问层。
发布于 2011-08-18 21:25:28
我对将安全性“委托给ip/安全组访问层”感到有点不舒服。实际上,我不知道这到底是什么意思。
此外,我不认为开放通配符mysql授权是个好主意,除非我的目标是被黑客攻击。
IMHO最安全的方法是使用弹性is和MySQL授权表中的is硬编码(哎哟,但这是最好的方法)。
https://serverfault.com/questions/160913
复制相似问题