使用 MySQL 查询获取 IP 地址

Posted

技术标签:

【中文标题】使用 MySQL 查询获取 IP 地址【英文标题】:Getting ip address using MySQL query 【发布时间】:2014-03-13 16:28:48 【问题描述】:

mysql 查询中:

SELECT host
FROM information_schema.processlist
WHERE ID = connection_id( )
LIMIT 0 , 30

^这个查询的结果是:localhost

SELECT @@hostname;

^这个查询的结果是:localhost

但我需要获得像192.168.1.2 这样的ipaddress。

问题: 如何使用mysql查询得到这个结果?

【问题讨论】:

如果您的名称解析工作正常,您无法使用 mysql 执行此操作。 Source @c vijila 您是否成功地获得了那里的 IP 地址而不是“localhost”?如果那里有什么东西可以更新我们,那就太好了。 查看此解决方案:***.com/questions/26712867/… 【参考方案1】:

只获取IP地址,不带端口号。

 Select SUBSTRING_INDEX(host,':',1) as 'ip' 
 From information_schema.processlist 
 WHERE ID=connection_id();

【讨论】:

如果您在本地计算机上运行它,这也将解析名称“localhost”。有没有办法拿到IP?【参考方案2】:

查询select host from information_schema.processlist WHERE ID=connection_id();

将为您提供主机名。如果未启用名称解析,您将获得 IP 地址(如192.168.1.2.),通常不会。

【讨论】:

【参考方案3】:

借助这个 post 和很棒的拆分功能,您可以像这样重写它:

Select user,CONCAT(Split_fn(host, "-", 2),'.',Split_fn(host, "-", 3),'.',Split_fn(host, "-", 4),'.',Split_fn(Split_fn(host, "-", 5),".",1)) as Ip_Address from information_schema.PROCESSLIST where ID = CONNECTION_ID()

【讨论】:

这总是给我一个错误。 Split_fn 不是默认的 MySQL 函数...在我的情况下,主机是 localhost:52321,因此它不能在任何“-”或“。”处拆分。字符。【参考方案4】:

我发现许多 MySQL 服务器使用 BIND_ADDRESS 全局变量。此变量返回服务器侦听的 IP 地址。然而,在我的测试中,这个值通常是“127.0.0.1”。

SHOW VARIABLES LIKE 'HOSTNAME';     -- Returns: MyHostName
SHOW VARIABLES LIKE 'BIND_ADDRESS'; -- Returns: 127.0.0.1

替代语法:

SELECT @@hostname, @@bind_address;  -- Returns: MyHostName, 127.0.0.1

注意:

这不是万无一失的解决方案。根据服务器配置,键BIND_ADDRESS(或@@bind_address)也可以返回值*

【讨论】:

取决于服务器配置 键“bind_address”的值为“*”。 @immobiluser 感谢您提供的信息。我在上面的答案中添加了有关此行为的注释。【参考方案5】:

请告诉我您是否需要从网站的访问者那里获取 IP,或者其他什么。如果你只需要访问者的IP,你可以使用php remote_addr 函数。

$_SERVER['REMOTE_ADDR'];

它类似于存储 IP 地址的表格吗?我认为您的查询是在寻找主机,而不是 IP。但我不确定我是否理解正确。

【讨论】:

PHP和MySQL的客户端IP有什么关系?甚至 - 为什么是 PHP? 过去我使用 php 来获取 IP 地址。我没有正确理解问题。 也许从这个表中选择*,看看哪一列包含IP地址? 除了是错误的技术之外,这还会为您提供用户浏览器的 IP 地址,而不是服务器地址

以上是关于使用 MySQL 查询获取 IP 地址的主要内容,如果未能解决你的问题,请参考以下文章

java如何查询本机ip地址和mac地址

【已解决】MYSQL的IP地址在那里看?

php获取了ip地址,用php怎么获取ip的地理位置?请大虾赐教!

API获取自己的公网IP地址 API查询IP信息

MySQL中查询哪些存储代码中写了IP地址

MySQL中查询哪些存储代码中写了IP地址