You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MariaDB未执行DNS解析:动态IPv6地址远程连接权限异常

解决MariaDB IPv6临时地址连接的主机授权问题

问题根源

虽然你的工作站IPv6反向解析到workstation.local-network,但MariaDB默认会对授权的主机名做双向解析验证:先反向解析客户端IP得到主机名,再正向解析该主机名,检查结果是否包含客户端的IPv6。如果临时IPv6没有及时同步到workstation.local-network的正向DNS记录,或者正向解析返回的地址不包含当前临时IP,就会导致授权匹配失败,即使skip-name-resolve设为OFF也没用。

可行解决方案

1. 按IPv6前缀授权(最简便)

如果你的ISP分配的IPv6前缀是固定的(大部分家庭/小型网络都是如此),直接授权整个前缀范围,不管临时地址后缀怎么变都能匹配:

-- 替换成你的工作站IPv6前缀(比如2a0e:xxxx:xxxx:xxxx::/64)
GRANT ALL PRIVILEGES ON db_name.* TO 'user_name'@'2a0e:xxxx:xxxx:xxxx::/64' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

执行后,只要工作站的IPv6属于该前缀,就能正常连接。

2. 关闭MariaDB的正向解析验证

修改MariaDB配置,让它仅使用反向解析结果匹配授权,不再做正向验证:

  1. 编辑MariaDB的主配置文件(通常是/etc/mysql/mariadb.conf.d/50-server.cnf),在[mysqld]区块添加以下配置:
skip-host-cache
skip-name-resolve=OFF
host-cache-size=0
  1. 重启MariaDB服务:
systemctl restart mariadb
  1. 重新授权user_name@workstation.local-network,此时MariaDB会直接用反向解析的主机名匹配授权,无需正向验证。

注意:这个方法依赖反向解析的可信度,确保你的DNS环境是安全的,避免恶意IP伪造反向解析。

3. 使用TLS客户端证书认证(最安全)

完全摆脱IP/主机名限制,通过客户端证书的CN字段验证身份:

  1. 生成CA证书、服务器证书和客户端证书(可通过OpenSSL自行生成)
  2. 在MariaDB配置中启用强制TLS客户端证书验证:
[mysqld]
ssl-ca=/path/to/ca-cert.pem
ssl-cert=/path/to/server-cert.pem
ssl-key=/path/to/server-key.pem
require-secure-transport=ON
require-x509=ON
  1. 创建授权用户,绑定客户端证书的CN字段:
GRANT ALL PRIVILEGES ON db_name.* TO 'user_name'@'%' REQUIRE SUBJECT '/CN=workstation.local-network';
FLUSH PRIVILEGES;

之后,工作站只要持有对应CN的客户端证书,无论IPv6怎么变,都能通过证书验证连接MariaDB。

内容的提问来源于stack exchange,提问作者Dobbo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 15:55:08