Ver conexiones MySQL activas por usuario

9

Necesito una consulta que me proporcione el número activo o abierto de conexiones a una determinada base de datos para un determinado usuario. He estado buscando durante horas y hasta ahora no he encontrado nada. Estoy cerca, así que esto es lo que he intentado.

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

  2. SHOW STATUS LIKE '%onn%';

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

Trabajo para una empresa de alojamiento web, y uno de nuestros clientes sigue llegando a su max_user_connectionslímite, por lo que en la solución de problemas por qué necesito saber cuántas conexiones está utilizando su usuario en este momento, ya que no es un servidor compartido. Actualmente estoy usando MySQL (InnoDB) versión 5.5.36. Cualquier ayuda sería muy apreciada!

Will Hughes
fuente

Respuestas:

11

Lo que necesita es un desglose por usuario y nombre de host junto con 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;

Esto manejará la dirección de host que tiene dos puntos que separan el nombre de host y el número de puerto

Espero que no todos inicien sesión como root

RolandoMySQLDBA
fuente
-1

Hubo una discusión en detalle para esto: https://dba.stackexchange.com/a/47160/385

En resumen, las consultas que necesita son

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

y

SHOW VARIABLES LIKE 'max_user_connections';

ACTUALIZAR

Tal vez esta no sea una respuesta directa a su pregunta, pero de acuerdo con http://dev.mysql.com/doc/refman/5.5/en/user-resources.html MySQL le permite limitar la cantidad de acceso por hora . Entonces, tal vez eso responda por qué un determinado usuario alcanza el límite, mientras que el número de conexiones de ellos es pequeño según la lista de procesos. Desafortunadamente, no puedo encontrar referencias sobre cómo obtener el contador de acceso.

Isaac A. Nugroho
fuente
No quiero cambiar el número de max_user_connections o ver max_user_ connections, sé cómo hacerlo. Quiero ver cuántas de esas conexiones tiene activo un usuario específico.
Will Hughes