我设置
SET GLOBAL max_allowed_packet=16777216;
以及
[mysqld]
max_allowed_packet = 16M
我通过以下命令检查了max_allowed_packet
SHOW VARIABLES LIKE 'max_allowed_packet';
,值为= 16777216
但是几天后max_allowed_packet会自动重置为1M。
答案 0 :(得分:6)
我很确定你被黑了。我好几个月都有同样的问题。我打开了general_log,最后找到了一些代码:
connect root@someipaddress on
Query select 0x4D5A900..........(verylong)
Query select sys_exe('cmd /c c:/windows/nbvqc4.vbs')
.........
set global max_allowed_packet 1024
........
建议:更改root密码。
答案 1 :(得分:1)
MySQL既有GLOBAL变量,也有SESSION变量,以及my.cnf。
GLOBAL变量在启动时从my.cnf初始化,并且许多变量在连接时从GLOBAL值获取并复制到SESSION中。如果更改GLOBAL值,则SESSION会保留它自己的值 - 但任何新会话都将采用新的GLOBAL默认值。
似乎你在设置GLOBAL变量和更新my.cnf方面做了正确的事情,但在你的例子中你运行了“SHOW VARIABLES”,它返回了SESSION值。因此,在这种情况下你可能没有检查正确的值。我建议您在将来检查时检查全局值和会话值,以便了解何时发生变化。
显示全局变量'max_allowed_packet'; 显示会话变量类似'max_allowed_packet';
要使值稍后改变,可以使用以下说明
(1)您正在重新使用仍具有旧值的会话 (2)另一个连接已经运行了SET GLOBAL max_allowed_packet,甚至可能有些无意义的应用程序或脚本正在执行此操作 (3)服务器重新启动,并且没有按预期应用my.cnf更改 - 可能是文件路径错误,或者配置文件中的设置存在多次。我会检查SHOW GLOBAL STATUS中的当前正常运行时间以了解服务器是否已重新启动
我想不出有任何其他原因会发生这种情况。我确实检查了当你传递--max_allowed_packet时客户端是否协商服务器端值,但似乎并非如此。
答案 2 :(得分:1)
是的,有人破解了系统。我更改了root密码,一切正常。
答案 3 :(得分:0)
默认情况下,max_allowed_packet的值在MySQL中是1M。我相信你的“max_allowed_packet”的大小超过了它的上限。所以,当你检查“SHOW VARIABLES LIKE'max_allowed_packet';”它显示出一些负面价值。
此外,
MySQL中有两个max_allowed_packet值:
客户端上的一个:[mysql]部分,[mysqldump],[client]等等。 一个在服务器端:[mysqld]部分。
答案 4 :(得分:0)
尝试将所有用户的“超级”权限设置为“N”,但1位管理员用户除外。这可以防止用户更改max_allowed_packet。
答案 5 :(得分:0)
我们遇到了这个问题,根本原因是我们被黑了。某些第三方正在运行一个正在更改值的脚本。
提示那些试图弄清楚黑客是否是他们的根本原因的人 - 暂时更改您的MySQL日志记录以包含所有查询。这就是我们最终找到问题的方式。