如何摆脱“最大用户连接数”错误?

ahm*_*med 17 mysql mysql-5 max-connections php mysql-5.1

我正在将 MySQLi 用于我的网络应用程序,但是每当我想访问某个特定页面时,我都会得到mysqli_connect() [function.mysqli-connect]: (42000/1203): User ***_user already has more than 'max_user_connections' active connections.

我已经尝试关闭所有连接,但这并没有改善情况。

有没有办法确切知道在任何特定时刻打开了哪些连接或任何其他可以帮助我解决此问题的有用数据?

顺便说一句,我使用的是 PHP 5.2.17 和 MySQL 5.1。

Rol*_*DBA 24

选项max_user_connections是一个限制,不是针对服务器实例中的同时连接总数,而是针对个人用户帐户。

假设用户被称为db_user@localhost。您可以通过运行以下查询来了解此用户的连接限制是多少:

SELECT max_user_connections FROM mysql.user
WHERE user='db_user' AND host='localhost';
Run Code Online (Sandbox Code Playgroud)

如果这是一个非零值,请将其改回:

GRANT USAGE ON *.* TO db_user@localhost WITH MAX_USER_CONNECTIONS 0;
Run Code Online (Sandbox Code Playgroud)

或者

UPDATE mysql.user SET max_user_connections = 0
WHERE user='db_user' AND host='localhost';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

这将导致mysqld允许用户db_user@localhost使用全局设置max_user_connections作为其限制。

一旦你到了这一点,现在使用检查全局设置

SHOW VARIABLES LIKE 'max_user_connections';
Run Code Online (Sandbox Code Playgroud)

如果这是一个非零值,你需要做两件事

事情#1:寻找设置/etc/my.cnf

[mysqld]
max_user_connections = <some number>
Run Code Online (Sandbox Code Playgroud)

注释掉那行

事情#2:动态设置值

SET GLOBAL max_user_connections = 0;
Run Code Online (Sandbox Code Playgroud)

不需要重新启动 MySQL。

警告

我过去讨论过这个设置

试一试 !!!