在MySQL查询中:
SELECT host
FROM information_schema.processlist
WHERE ID = connection_id( )
LIMIT 0 , 30
^此查询的结果是:localhost
。
SELECT @@hostname;
^此查询的结果是:localhost
。
但我需要像192.168.1.2
一样获得ipaddress。
问题: 如何使用mysql查询获取此结果?
答案 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。但我不确定我是否理解你。