我试图用一个简单的SQL语句获取客户端的IP地址。我不想使用PHP或其他技术。只有纯SQL。当我使用
SELECT USER();
我明白
dbouser@host.i.do.not.care.of
当我使用
SELECT CURRENT_USER();
dbouser@%
但是我如何获得普通IP?先谢谢你。
xoshrz7s1#
您将只获得与MySQL通信的客户端进程的IP地址。假设这是你想要的:
select host from information_schema.processlist WHERE ID=connection_id();
将给予你当前连接上连接到mysql服务器的主机名(如果没有启用名称解析,则为IP地址,通常不会启用)。
ars1skjm2#
仅获取IP地址而不获取端口号。select SUBSTRING_INDEX(host,':',1) as 'ip' from information_schema.processlist WHERE ID=connection_id();
select SUBSTRING_INDEX(host,':',1) as 'ip' from information_schema.processlist WHERE ID=connection_id();
pgky5nke3#
@mvf -而不是相反,你可以这样做:
SELECT SUBSTRING_INDEX(USER(), '@', -1) AS ip;
wlzqhblo4#
SELECT REVERSE(SUBSTRING_INDEX(REVERSE(USER()),'@',1)) as ip; SELECT SUBSTRING(USER(), LOCATE('@', USER())+1) as ip;
4si2a6ki5#
可以使用它从客户端获取IP地址,然后将其插入表$ip = $_SERVER['REMOTE_ADDR'];
$ip = $_SERVER['REMOTE_ADDR']
5条答案
按热度按时间xoshrz7s1#
您将只获得与MySQL通信的客户端进程的IP地址。假设这是你想要的:
将给予你当前连接上连接到mysql服务器的主机名(如果没有启用名称解析,则为IP地址,通常不会启用)。
ars1skjm2#
仅获取IP地址而不获取端口号。
select SUBSTRING_INDEX(host,':',1) as 'ip' from information_schema.processlist WHERE ID=connection_id();
pgky5nke3#
@mvf -而不是相反,你可以这样做:
wlzqhblo4#
4si2a6ki5#
可以使用它从客户端获取IP地址,然后将其插入表
$ip = $_SERVER['REMOTE_ADDR']
;