最直接确认方式是执行SHOW VARIABLES LIKE 'config_file';,若返回非空路径则为当前生效路径;否则说明未加载任何配置文件。

怎么确认当前生效的 my.cnf 路径
MySQL 启动时会按固定顺序扫描多个配置文件,my.cnf 不止一个,改错位置等于白改。最稳妥的方式是运行:
mysql --verbose --help | grep -A 1 'Default options'
输出里带 my.cnf 的路径(通常是 /etc/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf)才是真实被读取的。别直接编辑 /etc/my.cnf 就默认它起作用——有些发行版(如 Ubuntu 22.04+)优先用 /etc/mysql/mysql.conf.d/mysqld.cnf。
在 [mysqld] 段下添加 max_connections 的正确写法
max_connections 必须放在 [mysqld] 配置段内,不能写在 [client]、[mysql] 或文件末尾无分组处,否则 MySQL 启动时会报错或静默忽略。
- 错误写法:
max_connections = 1000(没加段头) - 错误写法:
[client] max_connections = 1000(位置错) - 正确写法:
[mysqld] max_connections = 1000
注意:旧版 MySQL(5.6 及以前)可能支持 set-variable=max_connections=1000,但 5.7+ 已废弃,用这个会启动失败。
改完必须重启 + 验证,漏一步就无效
修改配置文件后不重启服务,新值完全不会加载;重启后不验证,你根本不知道它有没有真正生效。
- 重启命令因发行版而异:
sudo systemctl restart mysql(Debian/Ubuntu),sudo systemctl restart mysqld(CentOS/RHEL) - 验证命令统一:
mysql -u root -p -e "SHOW VARIABLES LIKE 'max_connections';" - 如果返回仍是旧值,重点检查:
systemctl status mysql是否报 “Failed to reload configuration”,以及journalctl -u mysql -n 50 --no-pager里有没有 “unknown variable” 或 “syntax error” 类错误
容易被忽略的系统级限制
即使 MySQL 配置设成 2000,Linux 内核也可能卡死在更低的连接数上——因为每个 MySQL 连接会占用一个文件描述符(file descriptor),而 systemd 服务默认限制为 1024。
若你设了 max_connections = 2000 却发现连不到 1024 就报 “Too many connections”,就得同步放宽系统限制:
- 编辑
/usr/lib/systemd/system/mysqld.service(或mysql.service) - 在
[Service]段下添加:LimitNOFILE=65535 LimitNPROC=65535
- 执行:
sudo systemctl daemon-reload && sudo systemctl restart mysqld
这个步骤在高并发场景下不是可选项,而是必选项——否则调再大的 max_connections 也撑不住实际负载。


















