記一次線上數據庫用戶到達最大連接數錯誤 - MySQL 1203 錯誤
前言
用戶 admin 連接 MySQL 提示錯誤: ERROR 1203 : User admin already has more than 'max_user_connections' active connections
這個提示很明顯是 用戶 admin 的活動連接已經超出max_user_connections;
這里涉及到兩個 MySQL 的系統變量:
- max_user_connections : 任何給定的MySQL用戶帳戶允許的最大同時連接數。值0(默認值)表示 “無限制。”
- max_connections : 允許的最大同時客戶端連接數
mysqld實際上允許 max_connections + 1個客戶端連接。保留額外的連接,以供具有CONNECTION_ADMIN特權(或不建議使用的SUPER 特權)的帳戶 使用。通過將特權授予管理員而不是普通用戶(不需要該特權的用戶),即使連接SHOW PROCESSLIST了最大數量的非特權客戶端,管理員也可以連接到服務器并用于診斷問題。
(參考: MySQL 常見問題 >> B.3.2.5 Too many connections )
處理問題
- 使用 root 賬號登錄(應用連接用的賬號是 admin)
- 查詢連接參數配置, 發現連接數配置為 200.
show variables like '%connect%';

- 查詢進程, 發現有 201 個進程(其中多的一個為當前登錄的 root 賬戶, 即前面提到的給 super 賬戶保留的一個額外的連接)
select * from information_schema.processlist order by time desc;
# 或
show processlist;


參考: [8.14.1訪問進程列表-每個過程列表條目均包含信息](https://dev.mysql.com/doc/refman/5.7/en/processlist-access.html)
- 修改連接最大配置
修改后再次查詢進程, 可發現已經有 221 個進程了;
set global max_connections=500;
set global max_user_connections=0;


注意: 如果在 my.ini 配置文件中有配置, 記得同步修改;


浙公網安備 33010602011771號