调整MySQL连接超时需修改wait_timeout和interactive_timeout参数,可通过配置文件或SET GLOBAL命令设置,建议结合Docker挂载配置实现持久化,并验证参数生效以避免连接中断。
在使用 MySQL 镜像(如 Docker 部署的 MySQL)时,连接超时问题常出现在客户端长时间无操作后断开连接。这通常由 wait_timeout 和 interactive_timeout 参数控制。调整这两个参数可有效延长或缩短连接保持时间。
进入 MySQL 容器或编辑挂载的配置文件(通常是 my.cnf 或 mysqld.cnf),在 [mysqld] 段落下添加或修改以下参数:
示例配置(将超时时间设为 1 小时):
[mysqld] wait_timeout = 3600 interactive_timeout = 3600
如果无法立即重启容器,可通过 SQL 命令动态修改当前运行时参数:
SET GLOBAL wait_timeout = 3600; SETGLOBAL interactive_timeout = 3600;
该方式无需重启服务,但容器重启后会恢复默认值,适合测试验证。
若使用 docker-compose.yml 启动 MySQL,可通过挂载自定义配置文件实现持久化设置:
version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: mysql-server
environment:
MYSQL_ROOT_PASSWORD: yourpassword
ports:
- "3306:3306"
volumes:
- ./my.cnf:/etc/mysql/conf.d/my.cnf
并将上述超时参数写入本地 ./my.cnf 文件:
[mysqld] wait_timeout = 3600 interactive_timeout = 3600
登录 MySQL 执行以下命令查看当前值:
SHOW VARIABLES LIKE 'wait_timeout'; SHOW VARIABLES LIKE 'interactive_timeout';
确认输出结果是否为你设置的数值。
基本上就这些。只要改对配置并重启服务或动态加载,就能解决因空闲导致的连接中断问题。注意不要设置过长的超时时间,避免占用过多连接资源。