mysql最大连接数由max_connections系统变量控制,它限制同一时刻客户端连接总数,可通过select @@global.max_connections查看,修改需在配置文件[mysqld]段设置并重启服务。

mysql最大连接数由哪个参数控制
MySQL 的最大并发连接数由 max_connections 系统变量决定,它限制了同一时刻能建立的客户端连接总数。这个值不是越大越好——每个连接会占用内存(如线程栈、缓存等),设得过高可能导致 OOM 或响应变慢。
如何查看当前生效的 max_connections 值
连接进 MySQL 后直接查变量即可:
SELECT @@global.max_connections;
注意必须用 @@global,@@session 查不到这个变量(它不支持会话级修改)。也可以用命令行工具快速确认:
mysql -u root -p -e "SHOW VARIABLES LIKE 'max_connections';"
常见默认值:MySQL 5.7 是 151,8.0 是 150,但实际可能被启动时的配置覆盖。
修改配置文件并重启 MySQL 生效
永久生效必须改配置文件(通常是 /etc/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf),在 [mysqld] 段落下写:
[mysqld] max_connections = 500
改完后必须重启服务,否则不生效:
- systemd 系统:
sudo systemctl restart mysql(或mariadb,取决于安装名) - 确认是否成功:
sudo systemctl status mysql看状态,再进 MySQL 执行SELECT @@global.max_connections; - 如果重启失败,大概率是配置语法错误或值超出硬件承载能力(比如设成 10000 但物理内存不足),日志在
/var/log/mysql/error.log里找max_connections相关报错
运行时临时调整(不推荐长期使用)
可以用 SQL 临时调高,但仅对本次运行有效,MySQL 重启后还原:
SET GLOBAL max_connections = 600;
这适合紧急扩容排查,但有前提:
- 需要
SYSTEM_VARIABLES_ADMIN或SUPER权限 - 不能超过编译上限(可通过
mysqld --verbose --help | grep "max_connections"查看硬限制) - 该操作不会释放已有连接,只影响新连接建立;若已接近上限,应先 kill 掉闲置连接:
KILL [id]
真正上线前务必回到配置文件修改,临时 SET 容易被遗忘,下次重启就回退,问题重现。











