MySql存储IP地址(兼容ipv4和ipv6)

最近项目涉及到IP白名单的问题,需要设计表来存储IP地址,网上的方法针对IPV4和IPV6用什么类型存储也没有个统一的答案(都是抄来抄去。。。。)

1.使用VARBINARY 类型来存储IP地址

ipv4地址32位:

255.255.255.255 (十进制表示)

ipv6地址128位:

2001:0db8:0000:0000:0000:ff00:0042:8329

因此用VARBINARY(16)就可满足ipv4和ipv6的长度要求

2.表的设计

CREATE TABLE `t_ip` (`id` INT NOT NULL AUTO_INCREMENT,`ip_address` VARBINARY(16) NOT NULL,PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

3.插入数据

MySQL函数

INET6_ATON:将IP转化为二进制数据

INET6_NTOA:将二进制数据转化为IP

分别插入一条IPV4和IPV6的数据

INSERT INTO `t_ip` (`id`, `ip_address`) VALUES
(1, INET6_ATON('192.168.1.1')),
(2, INET6_ATON('FE80:0000:0000:0000:0202:B3FF:FE1E:8329'))

4.查询

SELECT id,INET6_NTOA(ip_address) AS ip FROM `t_ip`;

结果显示

MySql存储IP地址(兼容ipv4和ipv6)相关推荐

  1. IP地址,IPV4与IPV6

    目录 1.IP地址 2.IPV4 2.1.IPv4数据报格式 2.2.网络号和主机号 2.3.IP地址的分类 2.4.子网划分与子网掩码 2.4.1.子网划分 2.4.2子网掩码 2.5.网络地址转换 ...

  2. MySQL 存储 IP 地址

    在 MySQL 中,如果是以字符串的形式存储 IP 地址,在正常格式下,最小长度为 7 个字符 (0.0.0.0),最大长度为 15 个 (255.255.255.255),我们通常会使用 varch ...

  3. mysql存储ip地址_MySQL怎样存储IP地址

    为什么要问如何存储IP 首先就来阐明一下部分人得反问:为什么要问IP得怎样存,直接varchar类型不就得了吗? 其实做任何程序设计都要在功能实现的基础上最大限度的优化性能.而数据库设计是程序设计中不 ...

  4. 【mysql】MySQL存储IP地址

    为什么要问如何存储IP 首先就来阐明一下部分人得反问:为什么要问IP得怎样存,直接varchar类型不就得了吗? 其实做任何程序设计都要在功能实现的基础上最大限度的优化性能.而数据库设计是程序设计中不 ...

  5. IP地址、IPv4和IPv6的关系

    什么是IP地址? 当我们有一台电脑的时候,能做的事情就会非常有限,当你有两台电脑,你就需要将两台电脑进行相连,让他们进行协同工作,但是当你有三台,甚至更多的的时候,还能通过仅仅网线将他们互联吗? 可以 ...

  6. C# 获取本机IP地址,IPv4,IPv6(保姆级)

    每日一遍:今天你学习了吗? 前言: 在我们使用C# WinForm中,我们有时候是需要或者自己本机的IP地址进行处理,今天我们学习一下如何使用C# Winform获取主机的IP地址.现在博主手把手教你 ...

  7. MySQL如何有效的存储IP地址

    文章目录 序言 工具类实现转换 数据库函数实现转换 一.IP地址应该怎么存 二.整数存储 IP 地址的查询性能实验 1.测试范围查询: 2.IP精确查询: 3.整理一下结果发现: 总结 首先就来阐明一 ...

  8. mysql数据库ip地址_MySQL数据库存储IP地址的方法

    为什么要问如何存储IP? 首先就来阐明一下部分人得反问:为什么要问IP得怎样存,直接varchar类型不就得了吗? 其实做任何程序设计都要在功能实现的基础上最大限度的优化性能.而数据库设计是程序设计中 ...

  9. MySQL怎样存储IP地址

    为什么要问如何存储IP 首先就来阐明一下部分人得反问:为什么要问IP得怎样存,直接varchar类型不就得了吗? 其实做任何程序设计都要在功能实现的基础上最大限度的优化性能.而数据库设计是程序设计中不 ...

最新文章

  1. Linux进程描述符task_struct结构体简析
  2. stealwatch里的安全功能——ETA结果会显示加密套件以及key长度,还有流量大小(例如41MB)...
  3. 数据结构与算法之选择排序
  4. 启动spark集群,JAVA_HOME is not set
  5. python简单命令语句_Python语言----linux常用命令(13)
  6. 双卡项目如何在状态栏显示或隐藏G,3G以及卡1和卡2的信号标识
  7. linux编码安装mysql_在Ubuntu 15.10下安装mysql设置数据库编码
  8. java泛型实验报告,java实验报告异常集合类和泛型
  9. 【OpenCV】目标检测
  10. 【转】Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
  11. 电脑没声音,音频设备无法使用。扬声器安装程序unknown
  12. Java随意输入字符串,如果含有$将该字符及之前一个字符的去掉
  13. 旧BugkuCTF—部分wp
  14. nacos 适配人大金仓数据
  15. android 百度网盘 播放器,最好用的安卓播放器,支持云盘播放,看电影必备
  16. 亚马逊aws 服务器删除_亚马逊aws服务器免费套餐及被扣款怎么办
  17. kylin(麒麟)系统高分率字体小解决方案
  18. ISC 2018 蓝鲸魔塔线上赛-pwn
  19. TRIZ创新方法——现代TRIZ理论
  20. 使用一个线性回归模型来拟合身高-体重的数据

热门文章

  1. 国有企业数字化转型建设方法论
  2. Java方法excel文件转换成xml文件
  3. 怎么查服务器的操作系统是什么,怎么查服务器什么操作系统
  4. 扫地机器人常见的5种定位技术解析
  5. tkinter界面设计
  6. centos7的syslog知识点
  7. PyTorch之—可视化(Visdom/TensorboardX)
  8. 【Python】不同目录下的.py文件调用问题
  9. 秒懂流媒体协议 RTMP 与 RTSP
  10. 如何做超级链接?如何做网页链接