我快要疯了,想解决这个问题。我有一个 mysql 安装(在机器上db.example.org
),它无法解析给定的主机名。我使用主机名授予权限,即
GRANT USAGE ON *.* TO 'user'@'host1.example.org' IDENTIFIED BY PASSWORD 'secret'
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, INDEX ON `my_database`.* TO 'user'@'host1.example.org'
但是当我尝试使用连接时,mysql -u user -p -h db.example.org
我获得了
ERROR 1045 (28000): Access denied for user 'user'@'192.168.11.244' (using password: YES)
我已经在 DNS 系统中检查了正确的名称解析:
$ dig -x 192.168.11.244
;; ANSWER SECTION:
244.11.168.192.in-addr.arpa. 68900 IN PTR host1.example.org.
skip-name-resolve
事实上,我还检查了mysql 变量中的选项,看看我是否可以使用主机名权限从同一子网上的另一台机器进行访问。
唯一的区别是host1.example.org
和db.example.org
指向同一台机器上的相同 ip,即db.example.org
和host1.example.org
都有 ip 192.168.11.244。这样,使用该数据库的所有应用程序都可以使用该名称db.example.org
,我们只需更改 dns 记录即可将数据移动到其他主机上(如果需要),而无需更改应用程序代码。
我应该怎么做才能解决这个问题,或者至少了解发生了什么?
答案1
只是为了确认一下,你试过跑步吗清除特权?
答案2
几天后问题消失了...我再次尝试,现在它确实有效了。也许是 DNS 暂时故障或缓存问题(我多次执行了 flush hosts 命令)。无论如何,问题解决了。