配置MySQL支持IPv6连接的方法

3年前 (2018-08-23)阅读293回复0
admin
admin
  • 管理员
  • 注册排名1
  • 经验值1035
  • 级别管理员
  • 主题207
  • 回复0
楼主
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版本提供更长的字符支持。
0
回帖

配置MySQL支持IPv6连接的方法 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息