通过SQL命令显示MySQL主机


96
Show Database
Use database
show tables
Describe <table>

一切都很好,但是有可能显示当前的连接主机。不是connection_id,而是主机的IP地址或名称。

Answers:


197

获取当前主机名:

select @@hostname;
show variables where Variable_name like '%host%';

为所有传入请求获取主机:

select host from information_schema.processlist;

根据您的最新评论,
我认为您无法使用纯mysql函数来解析主机名的IP,
因为它需要进行网络查找,这可能需要很长时间。

但是,mysql文档提到了这一点:

resolveip google.com.sg

docs:-http: //dev.mysql.com/doc/refman/5.0/en/resolveip.html


我没有要在ATM上测试的远程主机,但是“ SELECT @@ hostname”提供了我的本地主机。如果MySQL会话连接到其他主机,它将显示远程主机名吗?我可以获取IP吗?
Craig Stewart

是的,如果您来自其他主机,它将显示不同的主机。但是,要解析相应的IP有点困难...
ajreal

是否可以从My-SQL获取IP?那很好啊。对@@ Hostname投一票,谢谢!如果无法使用IP,则将接受
Craig Stewart

使用命令行获取SQL中当前连接的远程主机IP。原因,脚本的寿命我不能百分百确定我的代码中我们连接到同一主机!
克雷格·斯图尔特

马来西亚人,但新加坡PR。
2015年


6

我认为您尝试获取联网用户的远程主机...

您可以从以下命令获取类似于“ myuser @ localhost”的字符串:

SELECT USER()

您可以在“ @”符号上拆分此结果,以获取各部分:

-- delivers the "remote_host" e.g. "localhost" 
SELECT SUBSTRING_INDEX(USER(), '@', -1) 

-- delivers the user-name e.g. "myuser"
SELECT SUBSTRING_INDEX(USER(), '@', 1)

如果您通过IP地址进行联网,则将获得ipadress而不是主机名。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.