【问题标题】:Getting ip address using MySQL query使用 MySQL 查询获取 IP 地址
【发布时间】:2014-03-13 16:28:48
【问题描述】:

在 MySQL 查询中:

SELECT host
FROM information_schema.processlist
WHERE ID = connection_id( )
LIMIT 0 , 30

^这个查询的结果是:localhost

SELECT @@hostname;

^这个查询的结果是:localhost

但我需要获得像192.168.1.2 这样的ipaddress。

问题: 如何使用mysql查询得到这个结果?

【问题讨论】:

  • 如果您的名称解析工作正常,您无法使用 mysql 执行此操作。 Source
  • @c vijila 您是否成功地获得了那里的 IP 地址而不是“localhost”?如果那里有什么东西可以更新我们,那就太好了。

标签: mysql sql ip-address


【解决方案1】:

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

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

【讨论】:

  • 如果您在本地计算机上运行它,这也将解析名称“localhost”。有没有办法拿到IP?
【解决方案2】:

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

将为您提供主机名。如果未启用名称解析,您将获得 IP 地址(如192.168.1.2.),通常不会。

【讨论】:

    【解决方案3】:

    借助这个 post 和很棒的拆分功能,您可以像这样重写它:

    Select user,CONCAT(Split_fn(host, "-", 2),'.',Split_fn(host, "-", 3),'.',Split_fn(host, "-", 4),'.',Split_fn(Split_fn(host, "-", 5),".",1)) as Ip_Address from information_schema.PROCESSLIST where ID = CONNECTION_ID()
    

    【讨论】:

    • 这总是给我一个错误。 Split_fn 不是默认的 MySQL 函数...在我的情况下,主机是 localhost:52321,因此它不能在任何“-”或“。”处拆分。字符。
    【解决方案4】:

    我发现许多 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)也可以返回值*

    【讨论】:

    • 取决于服务器配置 键“bind_address”的值为“*”。
    • @immobiluser 感谢您提供的信息。我在上面的答案中添加了有关此行为的注释。
    【解决方案5】:

    请告诉我您是否需要从网站的访问者那里获取 IP,或者其他什么。如果你只需要访问者的IP,你可以使用php remote_addr 函数。

    $_SERVER['REMOTE_ADDR'];
    

    它类似于存储 IP 地址的表格吗?我认为您的查询是在寻找主机,而不是 IP。但我不确定我是否理解正确。

    【讨论】:

    • PHP和MySQL的客户端IP有什么关系?甚至 - 为什么是 PHP?
    • 过去我使用 php 来获取 IP 地址。我没有正确理解问题。
    • 也许从这个表中选择*,看看哪一列包含IP地址?
    • 除了是错误的技术之外,这还会为您提供用户浏览器的 IP 地址,而不是服务器地址
    猜你喜欢
    • 2013-07-18
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 2010-11-04
    • 2023-03-09
    相关资源
    最近更新 更多