Mysql

如何擺脫“最大使用者連接”錯誤?

  • August 20, 2021

我正在為我的 webapp 使用 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。

選項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>

註釋掉那一行

事情#2:動態設置值

SET GLOBAL max_user_connections = 0;

不需要重啟 MySQL。

警告

我過去曾討論過此設置

試一試 !!!

引用自:https://dba.stackexchange.com/questions/47131