EC2 환경에서 MySQL에 접속하려고 하니 아래와 같은 에러가 발생했다.
원인
MySQL 서버가 특정 IP에서 너무 많은 연결을 감지해서 해당 IP 주소의 연결을 차단했다.
반복적인 비정상 연결 시도를 방지하기 위해 MySQL의 보안이 작동한 것이다.
해결
차단된 IP를 해제하려면 호스트 캐시를 비워야 한다.
추가로 동일한 문제가 다시 발생하지 않도록 설정해보자.
[MySQL 호스트 캐시 설정]
https://dev.mysql.com/doc/refman/8.0/en/host-cache.html#host-cache-operation
1. 설정값 확인
$ SELECT @@global.max_connect_errors;
$ SELECT @@global.max_connections;
당시 MySQL 로그인이 되지 않으니 SQL 명령어도 입력할 수 없는 상황이었다. 필자는 DBeaver로 DB를 연결해둔 덕분에 DBeaver에서 SQL 명령어를 실행할 수 있었다.
DBeaver와 RDS 연결은 아래 글을 참고 바란다.
2024.10.09 - [Services/Tool] - [DBeaver] DBeaver에 AWS RDS 연결하기
2. 호스트 캐시 비우기
$ TRUNCATE TABLE performance_schema.host_cache;
MySQL 8.0 이상에서는 FLUSH HOSTS 명령어 대신 위의 명령어를 사용해야 한다.
FLUSH HOSTS 명령어를 사용할 경우 아래와 같은 메시지가 나올 수 있다.
'FLUSH HOSTS' is deprecated and will be removed in a future release. Please use TRUNCATE TABLE performance_schema.host_cache instead.
3. max_connect_errors 값 설정(선택 사항)
호스트 차단이 발생하기 전에 허용되는 연속 연결 오류 수를 조정하려면 max_connect_errors시스템 변수를 설정한다.
$ SET GLOBAL max_connect_errors=10000;
특정 IP가 MySQL 서버에 연결할 때 오류를 발생시킬 수 있는 최대 횟수를 설정한다. (10,000번의 오류를 발생시키기 전까지 연결을 차단하지 않도록 설정)
+ MySQL 서버가 동시에 처리할 수 있는 최대 클라이언트 연결 수를 설정하고 싶다면 아래 명령어를 실행한다.
서버에 최대 300개의 동시 연결을 처리할 수 있게 된다.
$ SET GLOBAL max_connections=300;
참고
'💡 > 오류노트' 카테고리의 다른 글
[PM2] No process found 에러 해결 (0) | 2024.12.21 |
---|---|
[SSH] EC2 SSH 접속시 port 22: Operation timed out 에러 해결 (0) | 2024.12.21 |
[Caddy] 3000포트가 열리지 않는 문제 해결(+PM2로 무중단 서비스 적용) (0) | 2024.08.26 |
[MySQL] connect ECONNREFUSED 127.0.0.1:3306 에러 해결 (0) | 2024.08.25 |
[MySQL] [HY000][1130] "Host 'xxx.xxx.xx.x' is not allowed to connect to this MySQL server". 에러 해결 (0) | 2024.08.10 |