如何获取连接到mysql服务器的主机列表
我想获得连接到mysql服务器的主机列表。我怎么能得到这个? 连接到mysql服务器后应该怎么做。如何获取连接到mysql服务器的主机列表
代码片段确实有帮助。
什么是最好的API用于连接到MySQL使用C + +?你可以做到这一点
的一种方法是执行查询show processlist
,这会给你Id
,User
,Host
,db
,Command
,Time
,State
和Info
列的表。请记住,您的show processlist
查询将成为输出的一部分。
您可以尝试此查询:select distinct host from information_schema.processlist;
例如,从10.9.0.10和一个本地连接有多个连接。
mysql> select distinct host from information_schema.processlist; +-----------------+ | host | +-----------------+ | 10.9.0.10:63668 | | 10.9.0.10:63670 | | 10.9.0.10:63664 | | 10.9.0.10:63663 | | 10.9.0.10:63666 | | 10.9.0.10:63672 | | 10.9.0.10:63665 | | 10.9.0.10:63671 | | 10.9.0.10:63669 | | 10.9.0.10:63667 | | localhost | | | +-----------------+ 12 rows in set (0,00 sec)
如果你只想主机(不不同的连接),你可以尝试这样的事:select distinct substring_index(host,':',1) from information_schema.processlist;
例子: mysql> select distinct substring_index(host,':',1) from information_schema.processlist; +-----------------------------+ | substring_index(host,':',1) | +-----------------------------+ | 10.9.0.10 | | localhost | | | +-----------------------------+ 3 rows in set (0,00 sec)
你可以看到,MySQL的显示我一个空行,这是正常的(我有一个守护程序进程): mysql> select distinct substring_index(host,':',1),`command` from information_schema.processlist; +-----------------------------+---------+ | substring_index(host,':',1) | command | +-----------------------------+---------+ | 10.9.0.10 | Sleep | | localhost | Query | | | Daemon | +-----------------------------+---------+
您可以where `command`!="Daemon"
或where `host`!=''
删除它,这里是查询很好的链接也算从主机和显示哪些用户连接连接:http://blog.shlomoid.com/2011/08/how-to-easily-see-whos-connected-to.html当你说
,“SHOW PROCESSLIST”查询WIL我是输出的一部分,你的意思是可以有更多的主机吗?在你的意思是它只会让一部分主机连接? 运行“显示进程列表”并查询唯一的“主机”是否会这样做? – AMM 2010-07-07 07:08:20
是的,可以有任何主机,具体取决于您在运行查询时连接到MySQL实例的不同客户端计算机的数量。查询将返回_all_进程,包括你的(这是我的观点)。 'Host'字段显示连接到进程的客户端的主机名,所以如果你查询一个唯一的主机,你将只得到该主机的结果,是的。 – 2010-07-07 07:22:01