客戶端連接到 MySQL 時客戶端的 DNS 名稱錯誤 - 如何使用另一個客戶端主機名?
從一個 Amazon EC2 實例連接到另一個實例時,我正在嘗試使用受主機限制的 MySQL 使用者。我想為他們的 dns 功能使用彈性 IP 地址,但您可能可以忽略此問題中的 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 -uuser@app.fixedip.amazonaws.com -p -hdb.fixedip.amazonaws.com
更新:目前的答案重新定義了問題 - 不要打擾 mysql 中的主機並使用替代主機限制。我會接受,除非其他人想對原始問題發表評論
在 EC2 中實現安全 MySQL 數據庫訪問的標準方法是使用 EC2 安全組。僅允許從特定安全組(例如“dbclient”)中的 EC2 實例連接到 MySQL 數據庫伺服器埠 (3306)。將任何數據庫客戶端 EC2 實例放在“dbclient”安全組中。
配置 MySQL 本身以允許來自任何主機 ("%") 上的經過身份驗證的使用者的連接。
這解決了必須跟踪所有 EC2 實例的內部 IP 地址的問題,特別是因為當您停止和啟動實例時這些地址會發生變化,即使您分配了彈性 IP 地址也是如此。
這是我寫的一篇文章,它可以幫助您使用基於伺服器的彈性 IP 地址 DNS 名稱的內部 IP 地址從數據庫客戶端連接到數據庫伺服器:
使用彈性 IP 辨識 Amazon EC2 上的內部實例
這有助於解決數據庫伺服器在停止和啟動或更換時更改 IP 地址的問題。