在 MySQL 中设置连接超时时间可以通过以下几种方式实现,具体取决于你的需求(客户端或服务端配置):
1. 客户端连接时设置超时参数
在连接数据库时,通过命令行或代码指定超时参数:
命令行方式(mysql client)
mysql --connect_timeout=10 -u username -p
--connect_timeout=10
:设置连接超时为 10 秒(单位:秒)。
编程语言示例(如 Python)
import pymysql
conn = pymysql.connect(
host='localhost',
user='user',
password='password',
database='test',
connect_timeout=10 # 超时时间(秒)
)
2. MySQL 服务端配置
修改 MySQL 服务器的配置文件(my.cnf
或 my.ini
),调整以下参数:
[mysqld]
# 客户端连接超时(默认值通常为 10 秒)
connect_timeout = 30
# 交互式和非交互式连接的等待超时(默认:28800秒/8小时)
interactive_timeout = 3600
wait_timeout = 3600
connect_timeout
:建立 TCP 连接时的超时时间。wait_timeout
:非交互式连接的空闲超时时间。interactive_timeout
:交互式连接的空闲超时时间。
修改后需重启 MySQL 服务生效:
sudo systemctl restart mysql # Linux
3. JDBC/ODBC等驱动配置
如果是通过 JDBC (Java) 或其他驱动连接,可以在 URL 中指定参数:
String url = "jdbc:mysql://localhost:3306/db?connectTimeout=5000&socketTimeout=30000";
// connectTimeout: 连接超时(毫秒)
// socketTimeout: Socket读写超时(毫秒)
4. Session级临时设置
对当前会话动态修改超时时间:
SET GLOBAL wait_timeout = 3600;
SET SESSION wait_timeout = 1800;
注意事项
- 区分场景:
connect_timeout
:适用于建立连接的阶段。wait_timeout/interactive_timeout
:适用于已建立的空闲连接。
- 生产环境建议:避免将
wait_timeout
设得过短,否则可能导致频繁重连。
如果有其他具体需求,可以进一步说明!
内容由零声教学AI助手提供,问题来源于学员提问