请选择 进入手机版 | 继续访问电脑版

      配置MySQL支持IPv6连接的方法

      2018-8-23 14:50| 发布者: admin| 查看: 269| 评论: 0

      摘要: MySQL支持IPv6此处使用的MySQL版本为mysql-5.5.35-linux2.6-x86_64。验证操作系统支持IPv6,此处是Linux操作系统ping6 ::1配置MySQL支持IPv6连接在MySQL启动时绑定地址,在服务启动时使用如下参数--bind-address=add ...
      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版本提供更长的字符支持。

      鲜花

      握手

      雷人

      路过

      鸡蛋

      相关阅读

      最新评论

      QQ|Archiver|手机版|小黑屋|IPv6.la(IPv6技术网)

      GMT+8, 2018-10-24 06:41 , Processed in 0.173740 second(s), 23 queries .

      IPv6.la ©版权所有

      © 2018 IPv6.la(IPv6技术网)

      返回顶部