如何配置MariaDB仅以IP地址验证访问,解决DNS名称匹配问题
解决MariaDB仅用IP地址做访问验证的方案
你遇到的问题根本原因是MariaDB默认启用了客户端IP的反向DNS解析功能,进行访问权限匹配时会优先用解析得到的主机名而不是原始IP,才会出现需要适配各类域名后缀的问题。直接禁用反向DNS解析即可解决,操作步骤如下:
操作步骤
- 修改MariaDB配置文件,禁用反向DNS解析
找到MariaDB的主配置文件(一般是/etc/my.cnf或者/etc/mysql/mariadb.conf.d/50-server.cnf,不同发行版路径略有差异),在[mysqld]配置段下添加如下参数:skip-name-resolve - 重启MariaDB服务生效
systemd架构的发行版执行命令:systemctl restart mariadb - 确认配置生效
登录MariaDB执行如下命令查看参数状态:SHOW VARIABLES LIKE 'skip_name_resolve';
返回值为ON就代表配置已经生效。
注意事项
- 配置生效后,所有已配置的基于主机名的授权规则会全部失效,你需要提前把所有用户授权都改成IP地址/IP段格式,比如
'user'@'192.168.1.%'这类规则才能正常匹配。 - 本机访问场景如果用
127.0.0.1会正常匹配IP规则;如果你习惯用localhost访问,localhost在MariaDB里默认走unix socket连接,不受IP验证规则影响,也可以正常使用。
内容的提问来源于stack exchange,提问作者Todd
相关产品推荐
相关产品推荐

