使用MySQL查询获取IP地址

时间:2014-02-14 10:45:24

标签: mysql sql ip-address

在MySQL查询中:

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

^此查询的结果是:localhost

SELECT @@hostname;

^此查询的结果是:localhost

但我需要像192.168.1.2一样获得ipaddress。

问题: 如何使用mysql查询获取此结果?

5 个答案:

答案 0 :(得分:4)

仅在没有端口号的情况下获取IP地址。

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

借助此post以及出色的拆分功能,您可以像这样重写它:

   Sample  DuplicateSample
0       1            False
1       2             True
2       2             True
3       3            False
4       4             True
5       4             True

答案 3 :(得分:-1)

我发现很多 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)也可以返回值 *

答案 4 :(得分:-3)

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

$_SERVER['REMOTE_ADDR'];

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