当客户端连接到 MySQL 时,客户端的 DNS 名称错误 - 如何使用另一个客户端主机名?

当客户端连接到 MySQL 时,客户端的 DNS 名称错误 - 如何使用另一个客户端主机名?

我尝试在从一个 Amazon EC2 实例连接到另一个 Amazon EC2 实例时使用主机受限的 MySQL 用户。我想使用弹性 IP 地址来实现其 DNS 功能,但您可能可以忽略此问题中的 Amazon EC2 引用。

我认为我的问题是客户端以用户身份连接mysql时如何定义mysql客户端的dns名称?

如果我的问题错了,我深表歉意。也许它更通用 - 如何定义用于任何传出连接的本地机器主机名?

问题是客户端应用程序有两个 DNS 名称,但我需要使用另一个。详情如下:

Public                                    
db.fixedip.amazonaws.com                  app.fixedip.amazonaws.com
-------------------------------------------------------------------------------
Internal
db.randomdns.ec2.internal                 app.randomdns.ec2.internal

Actual machine instance
MySQL on Linux                            App on Windows 2003
'user'@'app.fixedip.amazonaws.com'

从应用程序

mysql -uuser -p -hdb.fixedip.amazonaws.com
ERROR 1130 (HY000): Host 'app.randomdns.ec2.internal' is not allowed to connect to this MySQL server

db.fixedip.amazonaws.com 方便地解析为内部 IP 地址(可以更改),但 MySQL 客户端无法识别为其非随机的 app.fixedip.amazonaws.com 公共 DNS 名称。

这似乎不起作用:)

mysql [email protected] -p -hdb.fixedip.amazonaws.com

更新:当前答案重新定义了问题 - 不要在 mysql 中费心使用主机,而是使用替代主机限制。除非其他人想对原始问题发表评论,否则我会接受这一点

答案1

在 EC2 中实现安全 MySQL 数据库访问的标准方法是使用 EC2 安全组。仅允许特定安全组(例如“dbclient”)中的 EC2 实例连接到 MySQL 数据库服务器端口 (3306)。将任何数据库客户端 EC2 实例放入“dbclient”安全组中。

配置 MySQL 本身以允许来自任何主机的经过身份验证的用户的连接(“%”)。

这解决了必须跟踪所有 EC2 实例的内部 IP 地址的问题,特别是因为当您停止和启动实例时这些地址会发生变化,即使您分配了弹性 IP 地址。

这是我写的一篇文章,可以帮助您使用基于服务器的弹性 IP 地址 DNS 名称的内部 IP 地址从数据库客户端连接到数据库服务器:

使用弹性 IP 识别 Amazon EC2 上的内部实例
http://alestic.com/2009/06/ec2-elastic-ip-internal

这有助于解决数据库服务器在停止、启动或更换时 IP 地址发生变化的问题。

相关内容