Como se livrar do erro "máximo de conexões do usuário"?

16

Estou usando o MySQLi para meu webapp, mas sempre que quero visitar uma página específica, recebo mysqli_connect() [function.mysqli-connect]: (42000/1203): User ***_user already has more than 'max_user_connections' active connections.

Eu já tentei fechar todas as conexões, mas isso não melhora a situação.

Existe uma maneira de saber exatamente quais conexões estão abertas em um determinado momento ou qualquer outro dado útil que possa me ajudar a resolver esse problema?

BTW, estou usando PHP 5.2.17 e MySQL 5.1.

ahmed
fonte

Respostas:

24

A opção max_user_connections é um limite imposto, não ao número total de conexões simultâneas na instância do servidor, mas na conta do usuário individual.

Digamos que o usuário seja chamado db_user@localhost. Você pode descobrir qual é o limite de conexão deste usuário executando esta consulta:

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

Se este for um valor diferente de zero, altere-o novamente com:

GRANT USAGE ON *.* TO db_user@localhost WITH MAX_USER_CONNECTIONS 0;

ou

UPDATE mysql.user SET max_user_connections = 0
WHERE user='db_user' AND host='localhost';
FLUSH PRIVILEGES;

Isso fará mysqldcom que o usuário db_user@localhostuse a configuração global max_user_connections como limite.

Quando chegar a esse ponto, verifique agora a configuração global usando

SHOW VARIABLES LIKE 'max_user_connections';

Se este for um valor diferente de zero, você precisará fazer duas coisas

COISA # 1 : procure a configuração em/etc/my.cnf

[mysqld]
max_user_connections = <some number>

comentar essa linha

COISA 2 : defina o valor dinamicamente

SET GLOBAL max_user_connections = 0;

Não é necessário reiniciar o MySQL.

EMBARGO

Eu discuti essa configuração no passado

De uma chance !!!

RolandoMySQLDBA
fonte