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.x它是 的公共 IP mydomain.com

答案1

我对所有外部数据包(包括 lo 上的数据包)进行了伪装。删除/编辑规则iptable -t nat POSTROUTING解决了该问题。

答案2

这很可能是由 hosts 文件条目引起的。

答案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 密码。希望这对您有所帮助。

相关内容