MySQL支持IPv6-TODO

MySQL支持IPv6
此处使用的MySQL版本为mysql-5.5.35-linux2.6-x86_64。

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

ping6 ::1

配置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

创建测试用户

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

给ipv6test用户增加执行权限

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

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

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

新增"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

使用netstat查看3306端口:

netstat -an | grep 3306

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

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

使用jdbc连接mysql的URL

// IPv4连接URL
// String jdbcIpv4Url = "jdbc: mysql://127.0.0.1:3306/databaseName ";
// IPv6连接URL
// String jdbcIpv6Url = "jdbc: mysql://address=(protocol=tcp)(host=2001:db8:1:0:20c:29ff:fe96:8b55)(port=3306)/database ";
注意使用IPv6地址时,必须使用address=(protocol=tcp)(host=2001:db8:1:0:20c:29ff:fe96:8b55)(port=3306)格式,
同时上面的格式中的host也兼容IPv4的格式,如下:
address=(protocol=tcp)(host=127.0.0.1)(port=3306)
所以为了同时兼容IPv4和IPv6,建议使用上面的格式连接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
可以使用简写版本:
address=(protocol=tcp)(host=2001:db8:1:0:20c:29ff:fe96:8b55),
或者把2001:db8:1:0:20c:29ff:fe96:8b55变为主机名hostname再填写,
或者尝试升级mysql版本提供更长的字符支持。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31551496/viewspace-2212512/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31551496/viewspace-2212512/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值