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


16

我正在将MySQLi用于我的Web应用程序,但是每当我要访问某个特定页面时,我都会得到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。

Answers:


24

max_user_connections选项是一个限制,不是对服务器实例中的并发连接总数施加限制,而是对单个用户帐户施加限制。

假设用户叫db_user@localhost。您可以通过运行以下查询来找出该用户的连接限制:

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

如果这是一个非零值,请使用以下命令将其更改回:

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

要么

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

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

到此为止,现在使用

SHOW VARIABLES LIKE 'max_user_connections';

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

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

[mysqld]
max_user_connections = <some number>

注释掉该行

第二件事:动态设置值

SET GLOBAL max_user_connections = 0;

无需重启MySQL。

警告

我以前讨论过这个设置

试试看 !!!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.