在 MySQL 8.0 中,查看连接数相关信息的命令主要分为查看连接数统计 、查看最大连接数配置 、查看连接进程详情等几类,以下是具体命令及说明:
1. 查看当前已建立的连接数(总连接数)
Threads_connected 表示当前 MySQL 服务器已建立的客户端连接总数(包括空闲和活跃连接),是最常用的连接数统计指标:
sql
SHOW STATUS LIKE 'Threads_connected';
示例输出:
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Threads_connected | 25 |
+-------------------+-------+
2. 查看当前活跃连接数(正在执行 SQL 的连接)
Threads_running 表示当前正在执行 SQL 语句或处理请求的活跃连接数(空闲连接不会计入):
sql
SHOW STATUS LIKE 'Threads_running';
示例输出:
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| Threads_running | 3 |
+-----------------+-------+
3. 查看 MySQL 的最大连接数配置
max_connections 是 MySQL 配置的最大客户端连接数上限(MySQL 8.0 默认值为 151,可手动调整):
sql
SHOW VARIABLES LIKE 'max_connections';
示例输出:
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 151 |
+-----------------+-------+
4. 查看连接进程的详细信息
(1)简洁版(前 100 条)
SHOW PROCESSLIST 会列出当前所有连接的简要信息(用户、主机、数据库、状态、执行的 SQL 片段等),默认只显示前 100 条:
sql
SHOW PROCESSLIST;
(2)完整版(所有连接)
SHOW FULL PROCESSLIST 会显示所有连接的完整信息(包括 SQL 语句的完整内容),适合排查长连接或慢查询:
sql
SHOW FULL PROCESSLIST;
(3)通过information_schema表查询(支持 SQL 筛选)
也可直接查询information_schema.PROCESSLIST表,支持用 SQL 语法筛选、分组统计连接数:
sql
-- 查看所有连接
SELECT * FROM information_schema.PROCESSLIST;
-- 按客户端主机分组统计连接数(去掉端口号)
SELECT SUBSTRING_INDEX(host, ':', 1) AS client_host, COUNT(*) AS connection_count
FROM information_schema.PROCESSLIST
GROUP BY client_host
ORDER BY connection_count DESC;
-- 按用户分组统计连接数
SELECT user, COUNT(*) AS connection_count
FROM information_schema.PROCESSLIST
GROUP BY user;
-- 查看空闲连接(状态为Sleep的连接)
SELECT * FROM information_schema.PROCESSLIST WHERE command = 'Sleep';
5. 其他相关统计指标
sql
-- 查看历史最大连接数(MySQL启动后达到的最大连接数)
SHOW STATUS LIKE 'Max_used_connections';
-- 查看连接数相关的累计统计(如连接尝试次数、成功连接数)
SHOW STATUS LIKE 'Connections'; -- 累计连接尝试次数(包括失败的)
SHOW STATUS LIKE 'Threads_created'; -- 累计创建的线程数(与连接池相关)
权限说明
- 普通用户执行
SHOW PROCESSLIST/ 查询information_schema.PROCESSLIST时,只能看到自己的连接; - 拥有
PROCESS权限的用户(如root),才能查看所有用户的连接信息。
调整最大连接数(可选)
若需调整max_connections,可临时修改(重启 MySQL 后失效):
sql
SET GLOBAL max_connections = 500;
若需永久生效,需修改 MySQL 配置文件(my.cnf/my.ini),添加或修改:
[mysqld]
max_connections = 500
修改后重启 MySQL 服务即可。