Afficher les connexions MySQL actives par utilisateur


9

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 ne cesse de dépasser sa max_user_connectionslimite.Par conséquent, pour résoudre le problème, je dois savoir combien de connexions son utilisateur utilise actuellement, car il n'est pas un serveur partagé. J'utilise actuellement MySQL (InnoDB) version 5.5.36. Toute aide serait grandement appréciée!

Réponses:


11

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 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


-1

Il y a eu une discussion détaillée à ce sujet: https://dba.stackexchange.com/a/47160/385

En bref, les requêtes dont vous avez besoin sont

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

et

SHOW VARIABLES LIKE 'max_user_connections';

MISE À JOUR

Ce n'est peut-être pas une réponse directe à votre question, mais selon http://dev.mysql.com/doc/refman/5.5/en/user-resources.html MySQL vous permet de limiter le nombre d'accès par heure . Donc, cela répond peut-être à la raison pour laquelle un certain utilisateur atteint la limite alors que le nombre de connexions est petit selon la liste des processus. Malheureusement, je ne trouve aucune référence sur la façon d'obtenir le compteur d'accès.


Je ne veux pas changer le nombre de max_user_connections ou voir les max_user_connections, je sais comment faire. Je veux voir combien de ces connexions un utilisateur spécifique a actives.
Will Hughes
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.