修复方法:在MySQL配置文件my.cnf中添加 bind-address=0.0.0.0,然后重启MySQL服务。这样就能强制MySQL只监听IPv4地址,避免IPv6连接问题。
远程连接技巧
远程处理时,先检查服务器是否启用了IPv6,如果是,用ss -tlnp | grep mysql查看监听端口,确保没有IPv6绑定。然后在客户端连接字符串中指定 --disable-ipv6 或用IPv4地址连接。
IPv6问题热议
很多人说这个错误是因为MySQL 8.0默认支持双栈,但服务器IPv6不可用导致的。建议临时禁用IPv6:sysctl -w net.ipv6.conf.all.disable_ipv6=1,重启网络。
另一个修复分享
在Docker容器里遇到,用环境变量 MYSQL_OPTS='--bind-address=0.0.0.0' 启动容器,问题就解决了。远程用mysql -h 127.0.0.1 -P3306 -u root -p 测试。
论坛讨论片段
用户A:我远程连不上,报ER_CONN_TCP_IPV6_AVAILABLE。用户B:加 skip-name-resolve 到my.cnf,禁用DNS解析,直接用IP连。用户C:对,IPv6解析出问题了。
云服务器技巧
阿里云ECS上,安全组放行IPv4端口,MySQL bind-address改成服务器内网IP,别用::1那种IPv6。重启mysqld.service生效。
热议原因分析
最近MySQL升级到8.4,很多教程没提IPv6兼容,远程工具如Navicat默认试IPv6失败。解决:连接设置里选Use IPv4。
FAQ
Q: 为什么会出现这个错误?
A: MySQL尝试用IPv6连接但服务器不支持或配置不对。
Q: 重启MySQL后还报错怎么办?
A: 检查防火墙和selinux,临时关闭试试。
Q: Windows客户端怎么修?
A: 用mysql命令加 --protocol=tcp --host=IPv4地址。
Q: 生产环境安全吗?
A: 用bind-address指定内网IP,加用户远程权限控制就好。