MySQL“wait_timeout”选项不会保存

MySQL“wait_timeout”选项不会保存

目前,我们服务器上的 MySQL 的 wait_timeout 设置为 28800,据我所知,这是默认值。我一直试图按照顾问的建议将其更改为 60,但更改似乎不需要很长时间。以下是我以 root 身份登录 Linux 并以数据库用户身份登录 MySQL 时尝试的操作:

1)登录MySQL并:

show variables like '%wait_timeout%';
set wait_timeout=60;

2)编辑/etc下的my.cnf文件,在[mysqld]和[mysqld_safe]中添加以下行:

wait_timeout=60

当我尝试 #1 并选择立即显示 wait_timeout 变量时,它正确显示为 60。但是,如果我等待一两分钟,它又会恢复到 28800。当我尝试 #2 时,即使重新启动 Apache 和 MySQL,该选项似乎也不起作用。

my.cnf 似乎是我能找到的唯一此类文件版本。

我尝试了以下操作,但没有显示任何参数:

mysql --print-defaults

重新启动 Apache 时,我一直在使用:

/usr/sbin/apachectl graceful

重新启动 MySQL 时,我一直在使用:

/etc/init.d/mysqld restart

有任何想法吗? :-(

答案1

恐怕你可能遇到了 MySQL 的几个陷阱之一。请参阅此错误报告

如果我理解正确的话,MySQL 命令行客户端会导致 mysqld 使用interactive_timeout而不是wait_timeout

以下查询返回什么?

SELECT @@global.wait_timeout, @@session.wait_timeout;

答案2

1.编辑my.cnf(MySQL配置文件)。

Ubuntu 16.04

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

Debian

sudo vi /etc/mysql/my.cnf

Centos

sudo vi /etc/my.cnf

2. 找到超时配置并进行调整以适合您的服务器。

[mysqld]
等待超时 = 31536000
interactive_timeout = 31536000

3. 保存更改并退出编辑器。

4. 重新启动 MySQL 以应用更改,如下所示:

sudo /etc/init.d/mysql 重启

答案3

Apache 不参与此过程,因此您可以跳过任何与此相关的操作。

至于 MySQL,您是否尝试过查看是否有其他 my.cnf 文件可能覆盖基本文件?此外,实际上不是重新启动,而是关闭 MySql 服务器,然后启动它。可能是因为有一两个线程保持打开状态,导致值恢复。

相关内容