Ver conexões MySQL ativas por usuário

9

Preciso de uma consulta que me forneça o número ativo ou aberto de conexões com um determinado banco de dados para um determinado usuário. Eu tenho procurado por horas e não consegui nada até agora. Estou perto, então aqui está o que eu tentei.

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

  2. SHOW STATUS LIKE '%onn%';

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

Eu trabalho para uma empresa de hospedagem na web, e um de nossos clientes continua atingindo seu max_user_connectionslimite, portanto, na solução de problemas, por que eu preciso saber quantas conexões o usuário está usando no momento, já que ele não é um servidor compartilhado. Atualmente, estou usando o MySQL (InnoDB) versão 5.5.36. Qualquer ajuda seria muito apreciada!

Will Hughes
fonte

Respostas:

11

O que você precisa é uma discriminação por usuário e nome do host, juntamente com um 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;

Isso manipulará o endereço do host que possui dois pontos que separa o nome do host e o número da porta

Espero que todos não estejam logando como root

RolandoMySQLDBA
fonte
-1

Houve uma discussão em detalhes para isso: https://dba.stackexchange.com/a/47160/385

Em resumo, as consultas que você precisa são

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

e

SHOW VARIABLES LIKE 'max_user_connections';

ATUALIZAR

Talvez essa não seja uma resposta direta à sua pergunta, mas de acordo com http://dev.mysql.com/doc/refman/5.5/en/user-resources.html O MySQL permite limitar o número de acessos por hora . Portanto, talvez isso responda por que um determinado usuário atinge o limite enquanto o número de conexões deles é pequeno, de acordo com a lista de processos. Infelizmente, não consigo encontrar referências sobre como obter o contador de acesso.

Isaac A. Nugroho
fonte
Eu não quero alterar o número de max_user_connections ou visualizar max_user_connections, eu sei como fazer isso. Quero ver quantas dessas conexões um usuário específico está ativo.
Will Hughes