Mysql
如何擺脫“最大使用者連接”錯誤?
我正在為我的 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。
警告
我過去曾討論過此設置
May 24, 2011
:什麼是使用者連接 - 什麼時候創建和銷毀?Jun 16, 2011
:為 Web 應用程序的每個使用者帳戶創建一個 MySQL 使用者是否明智?Mar 22, 2012
:如何限制 MySQL 連接?Feb 22, 2013
: Mysql : 每個使用者的最大連接數 - 可能嗎?試一試 !!!