MySQL连接超时由服务端参数控制,主要涉及wait_timeout、interactive_timeout和connect_timeout三个参数,默认通常为28800秒;可通过修改配置文件(如/etc/my.cnf或my.ini)中[mysqld]部分的wait_timeout和interactive_timeout值并重启服务来持久化设置,例如设为600秒;也可运行时执行SET GLOBAL wait_timeout=600、SET GLOBAL interactive_timeout=600动态生效,但重启后失效;客户端连接时可使用--connect-timeout=10等参数控制连接建立阶段的超时,不影响空闲连接;应用程序如PHP PDO可通过连接选项如PDO::ATTR_TIMEOUT设置,合理配置可平衡资源利用与业务稳定性。

MySQL客户端连接超时通常由服务器端参数控制,而不是客户端本身。安装完MySQL客户端后,若要调整连接超时行为,需通过配置MySQL服务器的参数或在客户端连接时指定相关选项来实现。以下是具体设置方法。
理解超时相关参数
MySQL中影响连接超时的主要参数有三个:
- wait_timeout:控制非交互式连接(如程序连接)在无操作状态下保持打开的秒数
- interactive_timeout:控制交互式连接(如命令行客户端)的空闲超时时间
- connect_timeout:客户端尝试连接到服务器时等待响应的最大秒数
这些值默认通常为28800秒(8小时),可根据需要调整。
修改服务器端超时设置
要持久化更改超时时间,需编辑MySQL配置文件。常见路径如下:
- Linux: /etc/my.cnf 或 /etc/mysql/my.cnf
- Windows: my.ini 文件,通常位于MySQL安装目录下
在[mysqld]部分添加或修改以下内容:
[mysqld] wait_timeout = 600 interactive_timeout = 600
保存后重启MySQL服务使配置生效:
- Linux: sudo systemctl restart mysql
- Windows: 通过服务管理器重启MySQL服务
运行时动态设置超时(无需重启)
可直接登录MySQL执行SQL命令临时修改超时值:
SET GLOBAL wait_timeout = 600;
SET GLOBAL interactive_timeout = 600;
该方式立即生效,但重启后会恢复为配置文件中的值。
客户端连接时控制超时行为
使用MySQL客户端连接时,可通过命令行参数指定连接超时:
mysql --connect-timeout=10 -h host -u user -p
其中--connect-timeout=10表示连接等待最长10秒。注意这仅影响建立连接阶段,不影响连接后的空闲超时。
对于应用程序,可在连接字符串中设置超时,例如PHP PDO:
$pdo = new PDO($dsn, $user, $password, [
PDO::ATTR_TIMEOUT => 10
]);
基本上就这些。超时设置主要靠服务端配置,客户端只能影响连接建立阶段。合理设置超时能避免资源浪费,同时保证正常业务不受影响。









