我最近购买了一台新服务器,并通过 WHM Transfer 转移了我所有的帐户。
问题是,当 WHM 进行每日备份时,它会输出如下消息
DBD::mysql::st execute failed: There is no such grant defined for user 'abc' on host 'myhostname'
当我从 my.cnf 文件中删除 skip-name-resolve 时,问题就解决了。虽然我没有发现速度有任何差异(当我不添加它时),但论坛中经常提到添加 skip-name-resolve 可以优化 Mysql 性能。
如果有专用服务器,添加 skip-name-resolve 真的有帮助吗?
答案1
这实际上取决于有多少客户端连接到服务器以及连接频率。如果只有一台服务器连接到 MySQL(例如本地主机),设置此选项实际上没有任何好处,因为 MySQL 会将 DNS 查找结果缓存一段时间,因此您实际上只会在开始时遭受性能损失。
如果有许多主机连接到 MySQL 服务器,并且有许多连接,那么您肯定可以看到好处(我在这样的环境中看到了好处:我们有 25 个 Web 服务器,这些服务器访问一个处理 500 q/秒的 DB 服务器,每个 Web 请求都有一个新连接)。
如果您选择这条路线,您必须调整所有的授权以使用 IP 地址而不是主机名,例如解决上述问题:
SHOW GRANTS FOR 'abc'@'myhostname';
获取该输出并将主机名更改为 IP 地址,以根据 IP 地址创建所有相同的授权。然后,您可以撤销基于主机的授权。