Thanks for your answer.
I unblocked all the hosts using “mysqladmin flush-hosts” and fixed temporarily the issue, but one hour and a half later I’m in the same situation on all the machines.
My application is anyway working fine and I can connect to mysql using the command line.
I even tried with a brand new MySQL installation, with anything really connected to it (apart from Monit) and I notice the same behaviour.
The version I’m using is [5.6.20 MySQL Community Server (GPL)] on a CentOS 6.
Monit 5.9 has new MySQL protocol test - the old one tried anonymous login (even negative response was interpreted as success, as MySQL processed the request), which generated lot of connection failures and flooded mysql log.
The new protocol test doesn't perform the login attempt and also checks the response code - if error was returned, the protocol test fails and logs details (as in your case). The new protocol test is correct, as when the client from which Monit runs the test is blocked, then even application which will run on the same host as Monit and will try to connect to MySQL will fail as well => MySQL won't work.
I recommend to fix the problem as suggested by MySQL error message (unblock the host).
failed protocol test [MYSQL] at INET[XXX.XXX.XXX.XXX:3306] via TCP -- Server returned error code 1129 -- XXX.XXX.XXX.XXX' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
Everything was working flawlessly with previous versions of Monit (like 5.8.1)
Are you aware of any issue with it?