본문 바로가기

에러

[Mysql] Packet for query is too large

java.sql.SQLException: Packet for query is too large (1228 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.

 

딱...

 

현재 윈도우즈 서버에서 운영중인 Mysql이 이전에도 이런 문제가 발생하여

max_allowed_packet 변수의 사이즈를 16M -> 128M -> 256M까지 올려서 해결하였지만.

 

설정이 자동으로 변경되었는지 다시 16M로 변경되어 있었음.

 

my.cnf의 아래 항목을 수정

[mysqld]

max_allowed_packet = 256M

[client]

max_allowed_packet = 256M

 

뭐 당장 해결해야 하니 다시 256M로 변경 후 재시작!

 

SHOW VARIABLES LIKE 'max_allowed_packet';

로 확인

 

왜 몇 일이 지나면 설정이 변경(?)되는지 모르겠다.

webserver에서 mysql connection이 끊어지는 것과 연관관계가 있나?

 

https://dev.mysql.com/doc/refman/5.7/en/packet-too-large.html

 

[추가]

==========================================================

설마했는데, stackoverflow 글에

https://stackoverflow.com/questions/28979660/why-mysql-max-allowed-packet-reset-to-1m-automatically

와같은 글을 보게되었고

 

댓글 쓴 분과 같이 query 로그를 보니 첨보는 아이피에서 접속 하여 이상한 짓거릴 해놓은 것을 발견함... 실제 max_allow_packet 크기를 1M로 잡는 query 또한 있었음.

 

아이피를 찾아보니 중국, 홍콩, 영국 등에서 접속 시도 또는 접속을 함

 

root 패스워드 또한 탈취당한 듯 하여(비밀번호가 맞질않음 ㅡㅡ), 백도어 계정으로 root 패스워드 변경하고 외부 접속 모두 차단해버림(불필요 계정들 모두 삭제하고 권한 또한 로컬 권한만 같도록 함)

 

실제 mysql DB에 이상한 table 및 바이너리 데이터를 넣은 것으로 보아 실제 어떤 프로그램을 바이너리 형태로 넣은 것이 아닌가 싶어 모두 삭제해 주었다.