MySQL支持IPv6
开启和验证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.参考文档:
MySQL Connector/J 8.0 Download
MySQL支持IPv6的更多相关文章
- 让你的mysql或mariadb 支持ipv6
如果你在windows 或Linux系统已经安装了mysql/mariadb,并且操作系统本身已经支持了ipv6. 在/etc/my.conf 这样配置可以让mysql也支持ipv6 [mysqld] ...
- iOS 支持 IPv6
苹果的规定:2016年6月1日提交到App Store必须支持IPv6-only网络. 官方文档:https://developer.apple.com/library/mac/documentati ...
- Mysql支持的数据类型(总结)
一.数值类型 Mysql支持所有标准SQL中的数值类型,其中包括严格数据类型(INTEGER,SMALLINT,DECIMAL,NUMBERIC),以及近似数值数据类型(FLOAT,REAL,DOUB ...
- MySQL支持的数据类型(1)( 整数,小点,位)
整数类型 字节 最小值 最大值 tinyint 1 有符号-128 无符号0 有符号127 无符号255 smallint 2 有符号-32768 无符号0 有符号32767 无符号65535 m ...
- linux centos6.5支持ipv6
1.用ifconfig查看有没有inet6 addr,我的这个已经支持了,如果不支持请看第二步. 2.vim /etc/sysconfig/network 把这句改成:NETWORKING_IPV6= ...
- MySQL支持的数据类型
1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节 范围(-128~127) smallint(m) 2个字节 范围(-32768~32767) mediumint(m) 3 ...
- iOS应用支持IPV6,就那点事儿
原文连接 果然是苹果打个哈欠,iOS行业内就得起一次风暴呀.自从5月初Apple明文规定所有开发者在6月1号以后提交新版本需要支持IPV6-Only的网络,大家便开始热火朝天的研究如何支持IPV6 ...
- iOS应用支持IPV6
一.IPV6-Only支持是啥? 首先IPV6,是对IPV4地址空间的扩充.目前当我们用iOS设备连接上Wifi.4G.3G等网络时,设备被分配的地址均是IPV4地址,但是随着运营商和企业逐渐部署IP ...
- MySQL支持的列类型
MySQL支持大量的列类型,它可以被分为3类:数字类型.日期和时间类型以及字符串(字符)类型.本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类型性质的更详细的描述. ...
随机推荐
- 【Linux】【Services】【SaaS】Docker+kubernetes(7. 安装Docker私有镜像仓库)
1. 简介 1.1. 自己做个私有镜像,方便上传和下载,我也在docker官网注册了一个账号,做好的镜像可以传上去 1.2. Redhat自带私有镜像的功能,需要安装包,这是howto: https: ...
- 如何简单的理解LSTM——其实没有那么复杂(转载)
转载地址:https://www.jianshu.com/p/4b4701beba92 1.循环神经网络 人类针对每个问题的思考,一般不会是完全的从头开始思考.正如当你阅读这篇译文的时候,你会根据已经 ...
- Linux提取命令grep 有这一篇就够了
grep作为linux中使用频率非常高的一个命令,和cut命令一样都是管道命令中的一员.并且其功能也是对一行数据进行分析,从分析的数据中取出我们想要的数据.也就是相当于一个检索的功能.当然了,grep ...
- 在写易买网时产生的错误 JSTL标签库中<c:choose></c:choose>不能放JSP页面<!-- -->注释
最近在使用JSTL标签库的<c:choose>标签时候,发现在该标签体中加了JSP的<!-- -->注释时,总是会显示报错信息.错误的信息如下: org.apache.jasp ...
- 【划重点】Python xlwt简介和用法
一.导入xlwt包,并初始化创建一个工作簿 import xlwt workbook=xlwt.Workbook() # 初始化创建一个工作簿 二.创建表单 sheet1=workbook.add_s ...
- [BUUCTF]PWN——wustctf2020_getshell1/2
wustctf2020_getshell 附件 步骤: 例行检查,32位程序,开启了NX保护 本地试运行一下程序,看看大概的情况 32位ida载入,习惯性的检索程序里的字符串,发现了后门函数 shel ...
- [BUUCTF]PWN——picoctf_2018_buffer overflow 1/2
picoctf_2018_buffer overflow 1 附件 步骤: 例行检查,32位程序,没开保护 本地运行一下程序,看看程序大概的执行情况 32位ida载入,习惯性的检查程序里的字符串,发现 ...
- 日历优先级(Project)
<Project2016 企业项目管理实践>张会斌 董方好 编著 好了,这下我们一共有三个日历了:"项目日历"(默认的日历)."任务日历"(与任务关 ...
- 自动造数据利器,Faker 了解一下?
1. 背景 在软件需求.开发.测试过程中,有时候需要使用一些测试数据,针对这种情况,我们一般要么使用已有的系统数据,要么需要手动制造一些数据.由于现在的业务系统数据多种多样,千变万化.在手动制造数据的 ...
- CF125A Measuring Lengths in Baden 题解
Content 在 Baden,一英寸等于 \(3\) 厘米,一英尺等于 \(12\) 英寸. 现在有一个 \(n\) 厘米的物体,求在 Baden,它是几英尺又几英寸. 数据范围:\(1\leqsl ...