【问题标题】:Retrieve client ip address in mysql在mysql中检索客户端IP地址
【发布时间】:2011-09-09 22:40:18
【问题描述】:

我正在尝试使用简单的 SQL 语句获取客户端的 IP 地址。我不想使用 PHP 或其他技术。只有纯 SQL。当我使用

SELECT USER();

我明白了

dbouser@host.i.do.not.care.of

当我使用时

SELECT CURRENT_USER();

我明白了

dbouser@%

但是我如何获得纯 IP?提前非常感谢。

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    您只会获得与 MySQL 通信的客户端进程的 IP 地址。假设这是你想要的:

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

    将给你主机名(如果名称解析未启用,通常不启用,则为您提供 IP 地址)连接到当前连接上的 mysql 服务器。

    【讨论】:

    • 感谢 MarkR 的快速答复。不幸的是,我正在使用有限权限的托管服务器。我不允许访问“information_schema.processlist”。
    • information_schema.processlist 不需要访问权限。他们必须使用被黑或非常旧的 MySQL 版本。
    【解决方案2】:

    只获取IP地址,不带端口号。

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

    【讨论】:

      【解决方案3】:

      @mvf - 你可以这样做而不是反向:

      SELECT SUBSTRING_INDEX(USER(), '@', -1) AS ip;
      

      【讨论】:

      • 这应该是最好的答案!
      【解决方案4】:
      SELECT REVERSE(SUBSTRING_INDEX(REVERSE(USER()),'@',1)) as ip;
      SELECT SUBSTRING(USER(), LOCATE('@', USER())+1) as ip;
      

      【讨论】:

      • user() 函数也是一个不错的解决方案。
      猜你喜欢
      • 2018-08-21
      • 1970-01-01
      • 1970-01-01
      • 2011-10-04
      • 1970-01-01
      • 2010-09-22
      • 2013-04-20
      • 2020-03-10
      • 2019-07-26
      相关资源
      最近更新 更多