开启和验证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的连接。

  1. [mysqld]
  2. 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

  1. // IPv4连接URL
  2. String jdbcIpv4Url_1 = "jdbc:mysql://10.43.159.11:3306/databaseName";
  3. String jdbcIpv4Url_2 = "jdbc:mysql://address=(protocol=tcp)(host=10.43.159.11)(port=3306)/databaseName";
  4. // IPv6连接URL
  5. String jdbcIpv6Url = "jdbc:mysql://address=(protocol=tcp)(host=2001:db8:1:0:20c:29ff:fe96:8b55)(port=3306)/database";
  6. // hostname连接URL
  7. String hostNmaeUrl_1 = "jdbc:mysql://zdh-11:3306/databaseName";
  8. 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有了更好的支持,

可以使用如下格式语法避免问题:

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

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

  1. 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:

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

另外提一下,主机名对应的如果是IPv4地址,

上面两种格式也是通用的,如下:

10.43.159.11 zdh-11-IPv4

  1. jdbc:mysql://zdh-11-IPv4:3306/databaseName
  2. 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都需要兼容的情况,推荐使用如下语法格式连接:

  1. jdbc:mysql://address=(protocol=tcp)(host=10.43.159.11)(port=3306)/databaseName
  2. jdbc:mysql://address=(protocol=tcp)(host=2001:db8:1:0:20c:29ff:fe96:8b55)(port=3306)/databaseName
  3. 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都需要兼容的情况,推荐使用如下语法格式连接:

  1. jdbc:mysql://10.43.159.11:3306/databaseName
  2. jdbc:mysql://[2001:db8:1:0:20c:29ff:fe96:8b55]:3306/databaseName
  3. 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. 让你的mysql或mariadb 支持ipv6

    如果你在windows 或Linux系统已经安装了mysql/mariadb,并且操作系统本身已经支持了ipv6. 在/etc/my.conf 这样配置可以让mysql也支持ipv6 [mysqld] ...

  2. iOS 支持 IPv6

    苹果的规定:2016年6月1日提交到App Store必须支持IPv6-only网络. 官方文档:https://developer.apple.com/library/mac/documentati ...

  3. Mysql支持的数据类型(总结)

    一.数值类型 Mysql支持所有标准SQL中的数值类型,其中包括严格数据类型(INTEGER,SMALLINT,DECIMAL,NUMBERIC),以及近似数值数据类型(FLOAT,REAL,DOUB ...

  4. MySQL支持的数据类型(1)( 整数,小点,位)

      整数类型 字节 最小值 最大值 tinyint 1 有符号-128 无符号0 有符号127 无符号255 smallint 2 有符号-32768 无符号0 有符号32767 无符号65535 m ...

  5. linux centos6.5支持ipv6

    1.用ifconfig查看有没有inet6 addr,我的这个已经支持了,如果不支持请看第二步. 2.vim /etc/sysconfig/network 把这句改成:NETWORKING_IPV6= ...

  6. MySQL支持的数据类型

    1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节 范围(-128~127) smallint(m) 2个字节 范围(-32768~32767) mediumint(m) 3 ...

  7. iOS应用支持IPV6,就那点事儿

    原文连接   果然是苹果打个哈欠,iOS行业内就得起一次风暴呀.自从5月初Apple明文规定所有开发者在6月1号以后提交新版本需要支持IPV6-Only的网络,大家便开始热火朝天的研究如何支持IPV6 ...

  8. iOS应用支持IPV6

    一.IPV6-Only支持是啥? 首先IPV6,是对IPV4地址空间的扩充.目前当我们用iOS设备连接上Wifi.4G.3G等网络时,设备被分配的地址均是IPV4地址,但是随着运营商和企业逐渐部署IP ...

  9. MySQL支持的列类型

     MySQL支持大量的列类型,它可以被分为3类:数字类型.日期和时间类型以及字符串(字符)类型.本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类型性质的更详细的描述. ...

随机推荐

  1. Git命令行演练-团队开发

    ** 团队开发必须有一个共享库,这样成员之间才可以进行协作开发** ### 0. 共享库分类    > 本地共享库(只能在本地面对面操作)        - 电脑文件夹/U盘/移动硬盘    & ...

  2. my42_Mysql基于ROW格式的主从同步

    模拟主从update事务,从库跳过部分update事务后,再次开始同步的现象 主库 mysql> select * from dbamngdb.isNodeOK; +----+--------- ...

  3. jenkins pipeline语法

    目录 一.声明式 二.脚本式 基本 判断 异常处理 Steps node withEnv 一.声明式 声明式Pipeline必须包含在名为pipeline的语句块中,典型的声明式Pipeline语法如 ...

  4. Django中的常用字段类型与参数

    Django中的常用字段类型 1. 数值型 以下都是数值相关的,比如AutoField,它在MySQL中的类型为int(11),而BooleanField在MySQL中对应的类型是tinyint(1) ...

  5. CF1492B Card Deck 题解

    Content 有 \(n\) 张纸牌组成的一个牌堆,每张纸牌都有一个价值 \(p_1,p_2,\dots,p_n\).每次选出最顶上的几个牌放到另外一个一开始为空的牌堆里面.定义一个牌堆的总值为 \ ...

  6. 200行代码理解Asp.Net Core

    转自https://www.cnblogs.com/xiandnc/p/11480735.html

  7. SpringBoot项目给静态变量static注入@Value

    @value不能直接注入值给静态属性,spring 不允许/不支持把值注入到静态变量中:spring支持set方法注入,我们可以利用非静态setter 方法注入静态变量 @Component publ ...

  8. win10使用cmake编译libevent(解决依赖openssl)

    概述 win10没有安装openssl cmake version: 3.18 libevent version: 2.1.10-stable libevent目前的版本中写好了 CMakeLists ...

  9. 【LeetCode】1472. 设计浏览器历史记录 Design Browser History (Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 模拟法 日期 题目地址:https://leetcod ...

  10. 【九度OJ】题目1431:Sort 解题报告

    [九度OJ]题目1431:Sort 解题报告 标签(空格分隔): 九度OJ [LeetCode] http://ac.jobdu.com/problem.php?pid=1431 题目描述: 给你n个 ...