it-swarm.com.de

Aktive MySQL-Verbindungen pro Benutzer anzeigen

Ich benötige eine Abfrage, die mir die aktive oder offene Anzahl von Verbindungen zu einer bestimmten Datenbank für einen bestimmten Benutzer gibt. Ich habe stundenlang gesucht und mir bisher nichts ausgedacht. Ich bin nah dran, also hier ist, was ich versucht habe.

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

  2. SHOW STATUS LIKE '%onn%';

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

Ich arbeite für ein Webhosting-Unternehmen, und einer unserer Kunden trifft immer wieder seine max_user_connections limit, also bei der Fehlerbehebung, warum ich wissen muss, wie viele Verbindungen sein Benutzer gerade verwendet, da er kein gemeinsam genutzter Server ist. Ich verwende derzeit MySQL (InnoDB) Version 5.5.36. Jede Hilfe wäre sehr dankbar!

9
Will Hughes

Was Sie brauchen, ist eine Aufschlüsselung nach Benutzer und Hostname zusammen mit einer Summe

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;

Dies behandelt Hostadressen mit einem Doppelpunkt zwischen Hostname und Portnummer

Ich hoffe, dass sich nicht alle als root anmelden

11
RolandoMySQLDBA