MySql max_allowed_packet 修改后经常变化的原因

    在阿里云上部署了一个MySql服务器,端口3306,密码较简单,对外开放。但是运行一段时间后,每当程序向MySql发起查询服务的时候,MySql就会报错,错误如下:Packet for query is too large (8742 > 1024),这个错误是由于MySql自身的安全性限制,只允许接收1M的SQL代码,超过这个限制,MySql就会出现错误。由于其默认是1M,因此我们只要修改一个参数,也就是max_allowed_packet 大一点问题就能解决。
修改max_allowed_packet 有两种办法:修改配置和命令执行。
    修改配置的方法如下:
    [mysqld]
    max_allowed_packet = 1M ( 将1M更改为4M(如果没有这行内容,增加一行)),保存,重起MySQL服务。
    命令修改换方法是:   
在命令行中可以用SHOW VARIABLES LIKE '%max_allowed_packet%'来查询当前MySql服务器的最大SQL代码允许大小。SET GLOBAL max_allowed_packet = 2*1024*1024*16可以来修改包的大小限制。重启服务就可生效。

    戏剧性的是本以为改了配置以后就可以解决包过大的问题,事实是修改之后也确实有效,但每次第二天发现参数又恢复原来的1M。因为没有人去人为修改,所以事情变得很蹊跷。在网上查到有人说是服务器内存不足,MySql自动重置。经查证本人服务器内存很充足,所以不存在内存过小的问题。网上又有人说是服务器有可能被人攻击人为修改,所为了验证这个问题,打开了MySql日志,果不其然,经过查证日志发现有莫名的IP登上来做了一些更改。
![图中的IP就是陌生IP](
我们再来看看它所做的操作。
[图中的1024就是其重置的]       
    知道问题的原因后,果断修改数据库密码,并关闭其它数据库用户。同时封闭3306的对外端口。做了如上措施后,系统运行几天后,一切正常。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值