开启和验证MySQL支持IPv6的方法,
此处使用的MySQL版本为mysql-5.5.35-linux2.6-x86_64。

1.验证操作系统支持IPv6,此处是Linux操作系统

ping6 ::1

2.配置MySQL支持IPv6连接

在MySQL启动时绑定地址,在服务启动时使用如下参数--bind-address=addr配置,
其中addr可以是IPv4或者IPv6地址,或者主机名hostname。
修改my.cnf配置文件,在[mysqld]选项下增加bind-address = ::配置,
把bind-address配置成::可以保证同时支持IPv4和IPv6的TCP/IP的连接。

[mysqld]
bind-address = ::

重启mysql使配置生效:
/etc/init.d/mysqld restart

3.创建测试用户

使用IPv4先登陆mysql,
执行命令CREATE USER 'ipv6test'@'::1' IDENTIFIED BY '123456';

4.给ipv6test用户增加执行权限

执行命令GRANT ALL PRIVILEGES ON . TO 'ipv6test'@'::1' IDENTIFIED BY '123456' WITH GRANT OPTION;

5.验证通过::1本地连接mysql数据库

输入命令mysql -h ::1 -uipv6test -p123456

6.新增"root@%"就可任意ip访问,注意%通配,

和IPv4时没有区别,如果已经配置了"root@%"用户,直接使用IPv6地址即可访问。
grant all on . to root@'%' identified by 'zdh1234' with grant option;
mysql -h 2001:db8:1:0:20c:29ff:fe96:8b55 -uroot -pzdh1234

7.使用netstat查看3306端口:

netstat -an | grep 3306

0.0.0.0:3306
表示监听端口绑定IPv4,只支持IPv4地址连接

:::3306
表示监听端口绑定IPv4和IPv6,支持IPv4和IPv6地址连接

8.使用jdbc连接mysql的URL

// IPv4连接URL
String jdbcIpv4Url_1 = "jdbc:mysql://10.43.159.11:3306/databaseName";
String jdbcIpv4Url_2 = "jdbc:mysql://address=(protocol=tcp)(host=10.43.159.11)(port=3306)/databaseName";
// IPv6连接URL
String jdbcIpv6Url = "jdbc:mysql://address=(protocol=tcp)(host=2001:db8:1:0:20c:29ff:fe96:8b55)(port=3306)/database";
// hostname连接URL
String hostNmaeUrl_1 = "jdbc:mysql://zdh-11:3306/databaseName";
String hostNmaeUrl_2 = "jdbc:mysql://address=(protocol=tcp)(host=zdh-11)(port=3306)/databaseName";

注意使用IPv6地址时,必须使用address=(key=value)这种语法格式,
同时上面的主机名zhd-11可以对应IPv4地址也可以对应IPv6地址,
所以为了同时兼容IPv4,IPv6和hostname的情况,建议统一使用address=(key=value)这种语法格式连接MySQL。

注意下面的连接字符串可能过长:
address=(protocol=tcp)(host=2001:db8:1:0:20c:29ff:fe96:8b55)(port=3306)
会有如下报错:

SQLException : SQL state: HY000 java.sql.SQLException: String 'address=(protocol=tcp)(host=2001:db8:1:0:20c:29ff:fe96:8b55)(port=3306' is too long for host name (should be no longer than 60) ErrorCode: 1470

可以使用简写版本,默认端口为3306:
address=(protocol=tcp)(host=2001:db8:1:0:20c:29ff:fe96:8b55),
或者把2001:db8:1:0:20c:29ff:fe96:8b55变为主机名hostname再填写,
或者尝试升级mysql版本提供更长的字符支持。

9.MySQL Connector 5.1和8.0版本的区别

使用MySQL Connector 5.1驱动,会发生步骤8中的问题;
使用MySQL Connector 8.0驱动, 对IPv6有了更好的支持,
可以使用如下格式语法避免问题:

jdbc:mysql://[2001:db8:1:0:20c:29ff:fe96:8b55]:3306/databaseName
jdbc:mysql://2001:db8:1:0:20c:29ff:fe96:8b55:3306/databaseName
jdbc:mysql://[2001:db8:1:0:20c:29ff:fe96:8b55]/databaseName

下面这种语法格式是会报错的,不能使用:

jdbc:mysql://2001:db8:1:0:20c:29ff:fe96:8b55/databaseName

10.使用主机名hostname连接MySQL

使用root用户添加IPv6地址对应的主机名映射
vi /etc/hosts
2001:db8:1:0:20c:29ff:fe96:8b55 zdh-11-IPv6
测试主机名能否ping通
ping6 zdh-11-IPv6
然后可以使用如下两种格式连接MySQL:

jdbc:mysql://zdh-11-IPv6:3306/databaseName
jdbc:mysql://address=(protocol=tcp)(host=zdh-11-IPv6)(port=3306)/databaseName

另外提一下,主机名对应的如果是IPv4地址,
上面两种格式也是通用的,如下:
10.43.159.11 zdh-11-IPv4

jdbc:mysql://zdh-11-IPv4:3306/databaseName
jdbc:mysql://address=(protocol=tcp)(host=zdh-11-IPv4)(port=3306)/databaseName

11.使用jdbc连接mysql的URL总结

11.1使用MySQL Connector 5.1驱动去连接MySQL

对应IPv4,IPv6和hostname都需要兼容的情况,推荐使用如下语法格式连接:

jdbc:mysql://address=(protocol=tcp)(host=10.43.159.11)(port=3306)/databaseName
jdbc:mysql://address=(protocol=tcp)(host=2001:db8:1:0:20c:29ff:fe96:8b55)(port=3306)/databaseName
jdbc:mysql://address=(protocol=tcp)(host=zdh-11)(port=3306)/databaseName

上面的主机名zhd-11可以对应IPv4地址也可以对应IPv6地址。

11.2 使用MySQL Connector 8.0驱动去连接MySQL

对应IPv4,IPv6和hostname都需要兼容的情况,推荐使用如下语法格式连接:

jdbc:mysql://10.43.159.11:3306/databaseName
jdbc:mysql://[2001:db8:1:0:20c:29ff:fe96:8b55]:3306/databaseName
jdbc:mysql://zdh-11:3306/databaseName

上面的主机名zhd-11可以对应IPv4地址也可以对应IPv6地址。
需要注意的是在8.0中address=(key=value)这种语法格式仍然是支持的。

12.参考文档:

5.1驱动对于IPv6的支持官方说明文档

8.0驱动对于IPv6的支持官方说明文档

MySQL Connector/J 8.0 Download

MySQL 5.5 Reference Manual / IPv6 Support

linux环境下配置mysql5.6支持IPV6连接的方法

MySQL支持IPv6相关推荐

  1. mysql5.6获取ipv6_linux环境下配置mysql5.6支持IPV6连接的方法

    简介: 本文主要介绍在linux系统下,如何配置MysqL支持IPV6的连接. 环境要求: 1.debian7.5操作系统虚拟机 2.MysqL5.6版本的数据库,并且已经在debian7.5系统上安 ...

  2. 【云周刊】第175期:终于来了!重磅发布:阿里云负载均衡SLB率先支持IPv6!

    本期头条 终于来了!重磅发布:阿里云负载均衡SLB率先支持IPv6! IPv6的设计初衷是用以解决IPv4地址枯竭问题,同时对IPv4进行大量改进,并最终取代IPv4.然而由于NAT等技术的广泛应用, ...

  3. 修改 mysql 支持远程连接

    修改 mysql 支持远程连接 use mysqlmysql> select host, user from user; 将相应用户数据表中的host字段改成'%': update user s ...

  4. OSS正式支持IPv6公测

    背景 6月20日阿里云宣布全面支持IPv6, 随后阿里云开放对象存储OSS也逐步开始向用户公测. 公测步骤 正常使用IPv6服务,除了OSS端支持还需要客户端支持,我们做一些检查证明客户端具备访问 I ...

  5. php mysql emoji表情_php 让MySQL支持Emoji表情 mysql 5.5.3+

    让MySQL支持Emoji表情 mysql 5.5.3+ 让mysql支持Emoji表情,涉及无线相关的 MySQL 数据库建议都提前采用 utf8mb4 字符集. mysql 版本 5.6 1 解决 ...

  6. mysql支持的并发数_重学MySQL系列(五):谈谈对MySQL的存储引擎的理解

    原创作者,公众号[程序员读书],欢迎关注公众号,转载文章请注明出处哦. MySQL关于存储引擎的架构设计,相较于其他关系数据库管理系统,比如Oracle,SQL Server等数据库,这是MySQL最 ...

  7. mysql 5.6 emoji_让MySQL支持Emoji表情 mysql 5.6

    让 1 解决方案:将Mysql的编码从utf8转换成utf8mb4. 需要 >= MySQL 5.5.3版本.从库也必须是5.5的了.低版本不支持这个字符集.  复制报错 2 my.cnf 文件 ...

  8. app是互联网信息服务器地址,详解如何让自己的网站/APP/应用支持IPV6访问,从域名到服务器配置...

    详解如何让自己的网站/APP/应用支持IPV6访问,从域名解析配置到服务器配置详细步骤完整. 感谢阅读,本文依然和一颗优雅草科技毫无关系且不代表且不代表其观点和立场,由伊凡撰写,如有转载请注明来源,码 ...

  9. ECS 支持 IPv6 啦,快来尝鲜吧~

    日前,阿里云头条发布了一篇文章,其中主要讲述了 IPv6 的重大意义以及阿里巴巴 IPv6 发展历程,大家可以点击查看:阿里云推出全栈 IPv6 解决方案,加速推进下一代互联网应用 本文将从实践角度讲 ...

最新文章

  1. mysql init file_关于MySQL的init-file选项的用法实例
  2. 2020年度「炼丹笔记」搜索推荐系统干货集锦
  3. boost::mpl::greater_equal相关的测试程序
  4. C#实现 UDP简单广播
  5. すぬけ君の塗り絵 / Snuke's Coloring(AtCoder-2068)
  6. 如何用VB.NET控制Excel單元格裡的內容?
  7. 下面的3条指令执行后,CPU几次修改IP?
  8. notepad++行首行尾添加字符
  9. java jersey get_java – Jersey GET请求可以返回一个多态实体吗​​?
  10. 分布式事务之基础理论(CAP/BASE理论)篇
  11. c语言 2,有一函数: y= 写一程序,输入x,输出y值.,有一函数 ,编写一段程序,输入x的值,输出相应的y值....
  12. android结束进程,卧薪尝胆70天内推入职阿里,附答案
  13. Guice依赖注入(接口多实现)
  14. 数据库-SQL语句创建与修改
  15. 交换机级联-知识点、注意事项
  16. 固态硬盘基础知识,了解一下
  17. 基于单片机的智能宠物喂食器设计
  18. hdu 5238 Calculator(线段树+CRT)
  19. 使用120台相机进行3D拍照建模
  20. 【路科验证008】DVT 软件使用指导

热门文章

  1. iOS - AutoLayout
  2. 51nod 1013快速幂 + 费马小定理
  3. Java学习----集合框架总结
  4. 数组----数组的拷贝、排序、遍历、引用,console交互
  5. 【转】请让孩子输在起跑线上
  6. 非极大值抑制(NMS)
  7. dos 注册服务器,DOS命令实现服务器断线短信通知
  8. fastboot devices 找不到设备_处理工业废气找不到好设备?您应该了解一下工业静电油烟净化器...
  9. 删除链表中绝对值相等的结点(C++)
  10. 远程查看室内亮暗情况