오늘은 협업 업체에서 사내 DB에 연결 시에 max_connect_errors 관련 에러가 뜬다고 해서,
관련내용을 포스팅해보려고 한다.
참고로 나는 블랭 아니고 블랑이다...
맥주 블랑을 좋아해서 입사할 때 영어이름을 Blanc으로 정했는데 그 뒤로 블랑 쳐다도안본다...^^
아무튼 이처럼 DB접속이 불가능 하고, max_connection_errors 수치 변경을 요청하셨다.
아마도 이런 에러가 나왔을 것이다.
ERROR 1129(00000): Host '*' is blocked because of many connection errors.
Unblock with 'mysqladmin flush-hosts
이제 max_connection_errors 가 뭔지 알아보자.
max_connection_errors는 권한이 없거나 문제가 있는 클라이언트로부터 데이터베이스 서버를 보호하는 데 사용된다.
이는 서버가 해당 호스트를 차단하기 전에 호스트에서 허용되는 연속 중단된 연결 시도 횟수를 지정한다.
오류로 인해 클라이언트가 서버에 연결하지 못하는 경우 서버는 해당 클라이언트의 호스트에 대한 오류 수를 증가시킨다.
오류 수가 값에 도달하면 max_connection_errors 서버는 해당 호스트로부터의 추가 연결을 차단한다.
성공적인 연결은 오류 수를 0으로 재설정하게 된다.
그럼 여기서 무작정 수를 높히면 되지 않을까? 라는 생각이 들 수도 있다.
값을 너무 높게 설정하면 서버가 잠재적인 무차별 암호 대입 공격에 노출될 수 있고,
너무 낮게 설정하면 몇 가지 네트워크 문제가 발생한 후 정상적인 클라이언트도 차단할 수 있다.
따라서 적당한 값으로 설정하는데 알아보니 대부분 10000으로 설정하는것 같다.
원인을 알았으니 이제 해결을 해보자.
1. SSH를 통해 해당 EC2인스턴스에 연결한다.
2. 텍스트 편집기로 Mysql 구성파일을 연다.
MySQL의 경우 구성 파일은 일반적으로 /etc/mysql/mysql.conf.d/mysqld.cnf 에 있다.
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
3. 구성 파일의 섹션[mysqld]에서 max_connection_errors 설정을 추가하거나 업데이트한다.
[mysqld]
...
max_connection_errors = 10000
4. 텍스트 편집기를 저장하고 종료한다.
CTRL + X -> Y -> Enter
5. Mysql 서비스를 다시 시작한다.
sudo service mysql restart
이제 데이터베이스 서버에 정상적으로 접속할 수 있을 것이다!
'Database > MySQL' 카테고리의 다른 글
[Mysql] 여러행의 데이터를 한 행의 데이터로 합치기 "GROUP_CONCAT" (0) | 2023.05.01 |
---|---|
[Mysql] 컬럼안에 JSON 데이터 추출하는 방법 "JSON_EXTRACT" (0) | 2023.03.13 |
[Mysql] Error - Invalid use of NULL value (0) | 2023.02.07 |