查看每个用户的活动MySQL连接


9

我需要一个查询,该查询将为我提供某个用户到某个数据库的活动或开放连接数。我一直在寻找时间,到目前为止却一无所获。我很近,所以这是我尝试过的。

  1. SHOW STATUS WHERE `variable_name` = 'Threads_connected';

  2. SHOW STATUS LIKE '%onn%';

  3. SELECT * FROM information_schema.processlist WHERE USER='database_user';

我在一家网络托管公司工作,我们的一位客户一直在竭尽所能max_user_connections,因此在进行故障排除时,由于他不是共享服务器,我为什么现在需要知道他的用户正在使用多少个连接,因此进行故障排除。我目前正在使用MySQL(InnoDB)5.5.36版。任何帮助将不胜感激!

Answers:


11

您需要的是按用户和主机名以及总数进行的细分

SELECT IFNULL(usr,'All Users') user,IFNULL(hst,'All Hosts') host,COUNT(1) Connections
FROM
(
    SELECT user usr,LEFT(host,LOCATE(':',host) - 1) hst
    FROM information_schema.processlist
    WHERE user NOT IN ('system user','root')
) A GROUP BY usr,hst WITH ROLLUP;

这将处理用冒号分隔主机名和端口号的主机地址

我希望每个人都不要以root用户身份登录


-1

对此进行了详细讨论:https : //dba.stackexchange.com/a/47160/385

简而言之,您需要的查询是

SELECT max_user_connections FROM mysql.user WHERE user='db_user' AND host='localhost';

SHOW VARIABLES LIKE 'max_user_connections';

更新

也许这不是您问题的直接答案,但是根据http://dev.mysql.com/doc/refman/5.5/zh-CN/user-resources.html,MySQL允许您限制每小时的访问次数。因此,也许可以回答为什么某个用户达到限制而他们的连接数根据进程列表而变小的原因。不幸的是,我找不到如何获得访问计数器的参考。


我不想更改max_user_connections的数量或查看max_user_connections,我知道该怎么做。我想查看一个特定用户活跃的连接数。
Will Hughes
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.