【发布时间】:2011-09-09 22:40:18
【问题描述】:
我正在尝试使用简单的 SQL 语句获取客户端的 IP 地址。我不想使用 PHP 或其他技术。只有纯 SQL。当我使用
SELECT USER();
我明白了
dbouser@host.i.do.not.care.of
当我使用时
SELECT CURRENT_USER();
我明白了
dbouser@%
但是我如何获得纯 IP?提前非常感谢。
【问题讨论】:
我正在尝试使用简单的 SQL 语句获取客户端的 IP 地址。我不想使用 PHP 或其他技术。只有纯 SQL。当我使用
SELECT USER();
我明白了
dbouser@host.i.do.not.care.of
当我使用时
SELECT CURRENT_USER();
我明白了
dbouser@%
但是我如何获得纯 IP?提前非常感谢。
【问题讨论】:
您只会获得与 MySQL 通信的客户端进程的 IP 地址。假设这是你想要的:
select host from information_schema.processlist WHERE ID=connection_id();
将给你主机名(如果名称解析未启用,通常不启用,则为您提供 IP 地址)连接到当前连接上的 mysql 服务器。
【讨论】:
只获取IP地址,不带端口号。
select SUBSTRING_INDEX(host,':',1) as 'ip' from information_schema.processlist WHERE ID=connection_id();
【讨论】:
@mvf - 你可以这样做而不是反向:
SELECT SUBSTRING_INDEX(USER(), '@', -1) AS ip;
【讨论】:
SELECT REVERSE(SUBSTRING_INDEX(REVERSE(USER()),'@',1)) as ip;
SELECT SUBSTRING(USER(), LOCATE('@', USER())+1) as ip;
【讨论】: