티스토리 뷰
[mysql에러] Error Code: 1429. Unable to connect to foreign data source: Host '***' is blocked because of many connection
sonna 2019. 7. 30. 12:02출처: https://choiwy.tistory.com/653
출처: https://blog.1day1.org/578
1. 원인
: A서버 DB에 federated 된 테이블이 다른 서버(B)에 있는 DB의 테이블이었는데 B서버의 mysql에서 A서버의 아이피를 차단한 것.
차단한 이유는 맨 위의 출처에 따르면 단순히 커넥션 한 후 close했을 때에 mysql에서 이를 비정상적인 접속으로 판단하는데 그 횟수가 mysql의 글로벌 변수 max_connect_errors의 설정값을 초과하게 되면 IP나 호스트를 차단한다고 한다.
2. 해결 : GLOBAL 변수 max_connect_errors의 값을 크게 설정하면 된다. (디폴트는 10이다.)
**Block 된 상태를 먼저 해결하려면 다음 명령어를 실행한다.
1) mysql에 접속하지 않은 상태라면 (리눅스 루트에서)
mysqladmin flush-hosts -uroot -p
2) mysql에 접속한 상태라면
FLUSH HOSTS;
**GLOBAL 변수 값 확인
SHOW VARIABLES LIKE '%error%'; (또는 %error% 대신 max_connect_errors를 넣어도 된다.)
**max_connect_errors 값 설정
1) GLOBAL 변수 값 설정 (mysql에 접속한 상태에서)
SET GLOBAL max_connect_errors = 값;
: 서버나 mysql을 재시작하지 않아도 적용되나, 서버가 재부팅 되거나 mysql을 재시작 된 경우 값이 초기화 된다.
2) mysql 설정문서(my.cnf)에서 아래 구문 추가
max_connect_errors = 값
: mysql을 재시작한 후에 적용이 된다. 그러나 서버가 재부팅 되거나 mysql이 재시작 되어도 설정값을 유지한다.
3. 주의사항
: 값을 설정해줘야 하는 곳은 B서버이다. 에러문에 A서버의 아이피가 나온다고 A서버의 값을 수정해봤자 효과는 없을 것이다ㅠㅠ