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

Wil*_*hes 11 mysql max-connections mysql-5.5 users

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

  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。任何帮助将不胜感激!

Rol*_*DBA 17

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

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;
Run Code Online (Sandbox Code Playgroud)

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

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


Isa*_*oho -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/en/user-resources.html MySQL允许你限制每小时的访问次数。因此,也许这可以解释为什么某个用户达到限制,而根据进程列表,其连接数却很小。不幸的是,我找不到有关如何获取访问计数器的参考。