我正在尝试使用简单的SQL语句来获取客户端的IP地址。我不想使用PHP或其他技术。只有纯SQL。当我使用
SELECT USER();
我得到了
dbouser@host.i.do.not.care.of
当我使用
时SELECT CURRENT_USER();
我得到了
dbouser@%
但是如何获得普通IP呢?非常感谢。
答案 0 :(得分:37)
您将只获取与MySQL通信的客户端进程的IP地址。假设这是你想要的:
select host from information_schema.processlist WHERE ID=connection_id();
将为您提供连接到当前连接上的mysql服务器的主机名(或未启用名称解析的IP地址,通常不是)。
答案 1 :(得分:7)
仅在没有端口号的情况下获取IP地址。
select SUBSTRING_INDEX(host,':',1) as 'ip' from information_schema.processlist WHERE ID=connection_id();
答案 2 :(得分:3)
SELECT REVERSE(SUBSTRING_INDEX(REVERSE(USER()),'@',1)) as ip;
SELECT SUBSTRING(USER(), LOCATE('@', USER())+1) as ip;
答案 3 :(得分:1)
@mvf - 你可以这样做而不是反向:
SELECT SUBSTRING_INDEX(USER(), '@', -1) AS ip;