web-dev-qa-db-fra.com

Afficher les connexions MySQL actives par utilisateur

J'ai besoin d'une requête qui me donnera le nombre de connexions actives ou ouvertes à une certaine base de données pour un certain utilisateur. Je cherche depuis des heures et je n'ai rien trouvé pour l'instant. Je suis proche, voici donc ce que j'ai essayé.

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

  2. SHOW STATUS LIKE '%onn%';

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

Je travaille pour une société d'hébergement Web et l'un de nos clients continue de frapper son max_user_connections limit, donc dans le dépannage pourquoi j'ai besoin de savoir combien de connexions son utilisateur utilise en ce moment car il n'est pas un serveur partagé. J'utilise actuellement MySQL (InnoDB) version 5.5.36. Toute aide serait grandement appréciée!

9
Will Hughes

Ce dont vous avez besoin est une ventilation par utilisateur et nom d'hôte ainsi qu'un total

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;

Cela gérera l'adresse de l'hôte qui a deux points séparant le nom d'hôte et le numéro de port

J'espère que tout le monde ne se connecte pas en tant que root

11
RolandoMySQLDBA