如何获取连接到mysql服务器的主机列表

时间:2010-07-07 06:45:57

标签: c++ mysql

我正在尝试获取连接到mysql服务器的主机列表。我怎么能得到这个? 连接到mysql服务器后我该怎么办。

代码片段确实会有所帮助。

还有什么最好的api用于使用c ++连接到mysql?

2 个答案:

答案 0 :(得分:3)

您可以执行此操作的一种方法是执行查询show processlist,该查询将为您提供包含IdUserHostdb的表格,CommandTimeStateInfo列。请记住,您的show processlist查询将成为输出的一部分。

答案 1 :(得分:0)

您可以尝试此查询: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向我显示了一个空行,这是正常的(我有一个deamon进程): 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