2010-07-07 2 views
1

Я пытаюсь получить список хостов, подключенных к серверу mysql. Как я могу это получить? Что мне делать после подключения к серверу mysql.Как получить список хостов, подключенных к серверу mysql

Фрагменты кода действительно помогут.

И что лучше всего использовать api для подключения к mysql с помощью C++?

ответ

3

Одним из способов вы можете сделать это, чтобы выполнить запрос show processlist, который даст вам таблицу с Id, User, Host, db, Command, Time, State и Info колонн. Помните, что ваш запрос show processlist будет частью вывода.

+0

, когда вы говорите, «шоу PROCESSLIST» Виль запрос Я являюсь частью вывода, вы имеете в виду, что может быть больше хостов, чем это? Как вы это понимаете, это будет связано только с частью хостов? Запуск «show processlist» и запрос уникального «Host» не могли бы сделать? – AMM

+0

Да, может быть любой хост, в зависимости от того, сколько разных клиентских машин подключено к вашему экземпляру MySQL в момент запуска вашего запроса. Запрос вернет _all_ процессы, в том числе ваши (что было моей точкой). Поле «Хост» показывает имя хоста клиента, подключенного к процессу, поэтому, если вы запрашиваете уникальный хост, вы получите только результаты для этого хоста, да. –

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

Смежные вопросы