Mysql DB 접속 오류(host 'xxx.xxx.xxx.xxx' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts')

SoHEeeeeee·2023년 7월 13일
0

mysql 워크벤치를 사용하는데 오류를 만났다.

<원인>

구글링을 해보니

원격 서버에서 Mysql Server 로 단순 커넥션 한 뒤 close 하게 되면
Mysql 은 비정상적인 접속으로 판단하여 해당 IP를 블럭킹하게 된다.

는 이유의 글이 많이 보였다.
단순 컨넥션이란 그저 서버에 연결하는 것을 말하고
close는 연결을 종료하는 것을 말하는데

그동안 그냥 워크벤치를 종료해서 이런 문제가 생겼는가 의문이 생겼다.

내가 할 수 있는 최선은 명시적으로 연결을 종료하는 방법 뿐이라
앞으로는 서버 종료 시에는 아래 사진과 같이 종료해 주어야 할 거 같다.


해결방법

구글링 결과 해결 방법은 이러하다.
max_connect_error이란 비정상적인 접속에 대한 요청수를 카운트한 값으로 기본값 보다 초과될 경우 접속 오류가 발생하는 것이다.

그렇기 때문에 아래와 같이 카운트를 초기화하고 기본값을 변경해주면 오류가 해결된다.

▶에러 카운트 초기화
flush hosts;

▶max_connections 변경
set global max_connections=300;

▶max_connect_errors 변경
set global max_connect_errors=10000;

▶max_connect_errors 카운트 확인
select @@global.max_connect_errors;

▶max_connections 카운트 확인
select @@global.max_connections;


<과정>

MobaXterm에 들어가 내가 접속에 실패한 회사의 테스트 서버에 접속해준다.
로그인 후 su 를 입력하여 root 권한으로 들어가준다.

이후 mysql 파일을 찾아 들어가 준 뒤!
내가 알고있던 테스트 서버의 아이디가 아닌 root로 아이디를 써준다.

mysql -u root -p

여기서 "-u root"는 "root" 계정으로 로그인하겠다는 의미이다. "-p"는 비밀번호를 입력해야 함을 나타낸다. 실행 후 비밀번호를 입력하라는 메시지가 표시된다.

이후는 코드를 작성해서 값을 확인 및 변경하면 된다.


내가 이 오류를 해결하면서 한 실수는
내가 사용하는 컴퓨터의 mysql server에서 해당 코드를 작성한 것이다.

그래서 아무리 초기화 시켜주고 값을 변경해줘도 오류가 해결되지 않아 당황했다.

오류가 발생한 이유는 기존에 사용하던 회사의 테스트 서버로부터 접속이 차단 된 것이기 때문에 내가 사용하는 서버가 아닌 테스트 서버 내에서 flush hosts;를 작성해 주어야 해결이 되는 문제였다.
(블락당한 서버에서 설정을 수정한다는 발상부터가 실수였다..)


참고
https://sd23w.tistory.com/414

profile
주니어 개발자

0개의 댓글