在MySQL数据库中存储IP地址(IPv4和IPv6)

And*_*ndy 7 php mysql ip ipv4 ipv6

好的,现在我知道类似的问题可能已被问过一百万次,但我是一个真正的新手,我真的很感谢你的帮助.

基本上,我想将访问者的IP地址存储在MySQL中,以便以后检索和验证.我首先需要知道我需要使用哪种类型的字段来存储IP地址.如果可能的话,我还想让系统与IPv6地址兼容.

提前致谢

ale*_*oot 11

要存储IPv4,您可以使用INT UNSIGNED,而对于IPv6,您需要decimal(39,0),在表中存储ip,您可以使用该功能INET_ATON:

INSERT INTO table (ipcol) VALUES (INET_ATON('192.168.0.10'));
Run Code Online (Sandbox Code Playgroud)

并使用以下函数检索它INET_NTOA:

SELECT INET_NTOA(ipcol) AS ip FROM table;
Run Code Online (Sandbox Code Playgroud)

这回答了MySQL IPv6支持之前存在的问题; 用户应该知道MySQL现在本身支持IPv6: https ://dev.mysql.com/doc/refman/5.6/en/miscellaneous-functions.html


inh*_*han 6

我使用VARBINARY(16)作为数据类型,并使用MySQL函数INET_ATON()插入IP号(后来我使用反向函数读取,INET_NTOA().