В этом учебном пособии вы узнаете, как найти всех пользователей, которые в настоящее время вошли (залогинились) в базе данных MySQL.
В MySQL есть системная таблица с именем information_schema.processlist, которая показывает потоки, которые в настоящее время запущены. Вы можете запустить запрос к этой системной таблице, которая возвратит всех пользователей, у которых в настоящее время запущенно соединение к базе данных MySQL.
Чтобы загрузить всех пользователей, зарегистрированных в MySQL, вы можете выполнить следующий оператор SQL:
1 2 3 4 5 6 |
SELECT SUBSTRING_INDEX(host, ':', 1) AS host_short, GROUP_CONCAT(DISTINCT user) AS users, COUNT(*) AS threads FROM information_schema.processlist GROUP BY host_short ORDER BY COUNT(*), host_short; |
Этот оператор SELECT возвращает хост, пользователя и количество потоков для этой комбинации хоста/пользователя.
Примечание
- У вас должны быть привилегии PROCESS, для просмотра потоков, принадлежащих другим пользователям. В противном случае вы увидите только свои потоки.
- Системная таблица Information_schema.processlist была представлена в MySQL 5.1.7.
Таблица information_schema.processlist содержит следующие столбцы:
Столбцы | Описание |
---|---|
ID | Уникальный идентификатор |
USER | Имя пользователя (например: root, admin и т. д.) |
HOST | Хост для пользователя |
DB | База данных, в которой работает поток |
COMMAND | Выполняется команда (т.е. Query, Sleep и т. д.). |
TIME | Количество секунд, в течение которых поток был запущен (т.е.: 3, 12, 353) |
STATE | Состояние потока (т.е.: выполнение) |
INFO | Отображает информацию о потоке. (т.е. если COMMAND = 'Query' и STATE = 'executing', будет отображаться SQL, который выполняется пользователем) |