我正在尝试使用命令连接到 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 密码。希望这对您有所帮助。