Mysql 將 127.0.0.1 解析為主機名

Mysql 將 127.0.0.1 解析為主機名

我正在嘗試使用命令連接到 mysql

mysql -h 127.0.0.1

它出現了錯誤

ERROR 1045 (28000): Access denied for user 'root'@'mydomain.com' (using password: NO)

為什麼 127.0.0.1 會被轉換成我的網域?

但是,如果我不指定主機(並且通過擴展,如果指定了“localhost”),它確實可以工作。

編輯: 好像使用TCP時解析為域名,所以使用時也失敗

mysql -h localhost --protocol=TCP

編輯2:當我使用skip-name-resolve時,我得到類似的輸出,除了mydomain.com替換為x.x.x.xwhich is the public IP mydomain.com

答案1

我偽裝了所有外部資料包(包括 lo)。刪除/編輯iptable -t nat POSTROUTING規則解決了該問題。

答案2

這很可能是由主機文件條目引起的。

答案3

也許mysql只監聽你的公共IP而不是0.0.0.0?

答案4

1) 檢查 /etc/hosts 並確保 127.0.0.1 僅指向 localhost 而不是 mydomain.com。 mydomain.com 應與伺服器的實際 IP 位址關聯,而不是與 localhost.localdomain 關聯。

2)看起來你已經在你的mysql實例上設定了root的密碼(其實這是一件好事)。建議將“-p”開關新增到您的登入名稱中,使其看起來像:

mysql -h 本機 -p

然後系統會要求您輸入 root 的密碼。希望這可以幫助。

相關內容