MySQL Server가 동작중인지 원격에서 검사할 때 유의할 점이다.
원격 서버의 MySQL 3306 포트가 살아있는지 검사할 때 단순히 커넥션을 한 후 close하게 되면
MySQL은 비정상적인 접속으로 판단하여 해당 IP를 블럭킹할 수 있다.

 
# telnet 192.168.1.2 3306
Trying 192.168.1.2...
Connected to 192.168.1.2.
Escape character is '^]'.
}너무 많은 연결오류로 인하여 호스트 '192.168.1.1'는 블락되었습니다. 'mysqladmin flush-hosts'를 이용하여 블락을 해제하세요
Connection closed by foreign host.
 


MySQL은 비정상적인 접속에 대한 요청수를 카운트를 하는데 max_connect_errors 변수에서 지정한 값을
넘으면 블럭킹을 한다. 기본 값은 10이며, 정기적인 포트 점검이 필요한 경우 이 수를 높여라.

다음은 MySQL Manual에 나온 글이다.



The number of interrupted connect requests allowed is determined by the value of the
max_connect_errors system variable. After max_connect_errors failed requests, mysqld assumes that
something is wrong (for example, that someone is trying to break in), and blocks the host from
further connections until you execute a mysqladmin flush-hosts command or issue a FLUSH HOSTS
statement. See section 5.2.3 Server System Variables.

By default, mysqld blocks a host after 10 connection errors. You can adjust the value by starting
the server like this:

shell> mysqld_safe --max_connect_errors=10000 &

If you get this error message for a given host, you should first verify that there isn't anything
wrong with TCP/IP connections from that host. If you are having network problems, it will do you no
good to increase the value of the max_connect_errors variable.
 


-------------------------------------------------------------------------------------------------

Unblock with 'mysqladmin flush-hosts'

원격지에서 mysql 서버에 접속하려면  아래와 같이 에러 메시지가 발생된다

ERROR 1129 (00000): Host 'xx' is blocked because of many connection errors.  Unblock with 'mysqladmin flush-hosts'


이럴경우 mysql에 접속하려는 서버에서 아래와 같이 명령어를 입력해 준다

그리고 나서 시행하면 정상적으로 외부에서 연결

리눅스 루트에서
[root@ns ~]# mysqladmin flush-hosts  -uroot -p
Enter password:



-----------------------------------------------------------------------------------------------

Host 'host_name' is blocked because of many connection errors. 
Unblock with 'mysqladmin flush-hosts'


MySQL의 호스트 블럭킹

원인을 모르겠는데, 특정 ip나 host에서 접속이 차단 되었다.

메뉴얼을 보니, 비정상적인 접속에 대한 요청수가 max_connect_errors 변수값을 초과하면 블럭킹된다고 한다. 기본값:10
자주 발생한다면, max_connect_errors 값을 늘려서 해결해야 할것 같다.


추가내용
DNS나 네트워크가 불안할 경우 발생할 수 있다고 합니다.
우발적인 커넥션 단절을 막기 위해 max_connect_errors 값을 충분히 늘려주고,  my.cnf(my.ini)에 skip_name_resolve을 활성화하여 호스트기반이 아닌 IP기반으로 사용할것~ 
[mysqlkorea.co.kr 인용]


Posted by wychoi
,