开启和验证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. 让你的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. redis入门到精通系列(四):Jedis--使用java操作redis详解

    (一)前言 如果不把数据库和后端语言联系起来,就起不到数据库应该要起到的作用.Java语言通过JDBC操作mysql,用Jedis操作redis.当然了,java操作redis的方式不止jedis一种 ...

  2. sax方式解析XML学习笔记

    原理:对文档进行顺序扫描,当扫描到文档(document)开始与结束,元素开始与结束.文档结束等地方 通知事件处理函数,由事件处理函数相应动作然后继续同样的扫描,直至文档结束. 优点:消耗资源比较少: ...

  3. oracle name

    1.db_name 数据库名 SQL> connect xys/manager as sysdba 已连接. SQL> show user USER 为 "SYS" S ...

  4. sql优化的8种方式 (下)

    五.条件列表值如果连续使用between替代in        六.无重复记录的结果集使用union all合并 MySQL数据库中使用union或union all运算符将一个或多个列数相同的查询结 ...

  5. elasticSearch索引库查询的相关方法

    package com.hope.es;import org.elasticsearch.action.search.SearchResponse;import org.elasticsearch.c ...

  6. 走进Spring Boot源码学习之路和浅谈入门

    Spring Boot浅聊入门 **本人博客网站 **IT小神 www.itxiaoshen.com Spring Boot官网地址:https://spring.io/projects/spring ...

  7. 『与善仁』Appium基础 — 25、APP模拟手势高级操作

    目录 1.手指轻敲操作 2.手指按下和抬起操作 3.等待操作 4.手指长按操作 5.手指移动操作 6.综合练习 APP模拟手势的动作都被封装在TouchAction类中,TouchAction是App ...

  8. AcWing3544. 寻找变化前的01序列

    题目描述 给你一个 01 序列,HDLC 协议处理的话,如果出现连续的 5 个 1 会补 1 个 0. 例如 1111110,会变成 11111010. 现在给你一个经过 HDLC 处理后的 01 序 ...

  9. windows10源码编译llvm

    准备 cmake, 我目前使用的版本是3.18 llvm 源码, 我下载的是 11.0 我已经具备Vs2015和Vs2017的开发环境. debug模式编译需要较多内存和较多硬盘存储空间. (debu ...

  10. 【LeetCode】133. Clone Graph 解题报告(Python & C++)

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