在 MySQL 中,”跳过域名解析”通常指通过配置 skip-name-resolve 选项禁用 DNS 反向查询,以提升连接速度和解决可能的网络问题,以下是详细操作:

修改 MySQL 配置文件
- Linux: 编辑
/etc/my.cnf或/etc/mysql/my.cnf - Windows: 编辑
my.ini(通常在 MySQL 安装目录)
在 [mysqld] 部分添加:
[mysqld] skip-name-resolve
重启 MySQL 服务
- Linux:
sudo systemctl restart mysql # 或 mysqld
- Windows:
通过服务管理器重启 “MySQL” 服务。
验证配置生效
登录 MySQL 执行:
SHOW VARIABLES LIKE 'skip_name_resolve';
若返回 ON 表示已启用。
⚠️ 重要注意事项
-
用户权限需使用 IP 地址
启用后,MySQL 授权表中的host字段必须使用 IP 地址(而非域名),否则用户将无法登录。
-- 正确(使用 IP) CREATE USER 'user'@'192.168.1.100' IDENTIFIED BY 'password'; -- 错误(使用域名将失效) CREATE USER 'user'@'example.com' IDENTIFIED BY 'password';
-
本地连接问题
- 避免使用
localhost(它依赖域名解析),改用0.0.1连接。 - 若需保留
localhost,Unix 系统下需确保mysql.user表存在'user'@'localhost'条目。
- 避免使用
-
性能提升
适用于高并发场景,避免 DNS 查询延迟(尤其 DNS 服务不稳定时)。
常见问题解决
Q:启用后用户无法登录?
检查用户权限是否使用 IP 地址:
SELECT user, host FROM mysql.user; -- 确保 host 列是 IP 或通配符(如 `192.168.%`)
Q:如何临时测试效果?
启动 MySQL 时直接加参数(不修改配置):

mysqld --skip-name-resolve
通过以上步骤,MySQL 将跳过域名解析,直接使用 IP 处理连接,提升效率并避免 DNS 相关问题,务必同步调整用户权限!
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/284687.html


评论列表(5条)
这篇文章提到的MySQL跳过域名解析技巧确实很实用!我自己做运维的时候就遇到过类似情况:服务器明明没啥压力,但MySQL连接时不时卡一下,后来才发现是DNS解析拖了后腿。开启skip-name-resolve之后,连接速度肉眼可见地变快了,特别是那些用IP直连的应用,效果立竿见影。 不过我觉得作者可以再划个重点——这个优化是有代价的!一旦跳过了域名解析,MySQL里所有用主机名做的权限设置就全失效了,必须改用IP地址来授权。要是团队里有人没注意这点,稀里糊涂配了权限,回头发现连不上数据库可就抓瞎了。我见过有同事迁移服务器时忘了这茬,半夜爬起来修配置的惨剧。 所以用这个技巧得看场景。如果是纯内网环境,机器都用固定IP管理,那果断开;但要是环境复杂或者权限管得细,还是得悠着点。另外提个小经验,开了之后最好用host命令手动测测反向解析,确认没有程序依赖这个功能。优化虽好,可别给自己挖坑呀!
@树树4817:树树说得太真实了!确实每次开skip-name-resolve都得提心吊胆检查权限配置,我们团队就踩过坑。补充一点血泪教训:开了这个选项后连监控报警都可能失灵——之前我们zabbix用主机名监控DB,突然全掉线了。现在每次优化前都得拉着运维和开发对一遍依赖项,权限文档也得同步更新,不然半夜真的会哭醒。
这个技巧真心实用!之前我们服务器访问量一大就出问题,开了skip-name-resolve后连接速度肉眼可见变快了。不过得记得改完配置后只能用IP连数据库,别把自己锁外面哈。这类小优化真能省不少心,值得一试!
这篇文章讲得太棒了!跳过域名解析确实是个神器,我试过之后MySQL连接直接快了一截,以前老卡在DNS查询上,现在负载再高也不担心了,推荐所有运维小伙伴都看看!
@sunny580man:哈,sunny580man,你分享的体验太真实了!跳过域名解析确实是运维利器,我这边测试过也提速明显。不过要注意,如果系统依赖主机名做权限控制,跳过后可能出小问题,最好先全盘检查下配置,避免意外。整体超推荐!