我正在尝试获取连接到mysql服务器的主机列表。我怎么能得到这个? 连接到mysql服务器后我该怎么办。
代码片段确实会有所帮助。
还有什么最好的api用于使用c ++连接到mysql?
答案 0 :(得分:3)
您可以执行此操作的一种方法是执行查询show processlist
,该查询将为您提供包含Id
,User
,Host
,db
的表格,Command
,Time
,State
和Info
列。请记住,您的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