回答:
この時点で、FLUSH HOSTSを実行して、ブロックが解除されるかどうかを確認する必要があります。
MySQLのドキュメントでは、FLUSH HOSTSについて次のように説明しています。
- ホストキャッシュテーブルを空にします。ホストの一部がIPアドレスを変更した場合、またはホスト 'host_name'がブロックされていますというエラーメッセージが表示された場合は、ホストテーブルをフラッシュする必要があります。MySQLサーバーへの接続中に特定のホストでmax_connect_errorsを超えるエラーが連続して発生すると、MySQLは何かが間違っていると見なし、ホストがそれ以降の接続要求をブロックします。ホストテーブルをフラッシュすると、ホストからのさらなる接続試行が可能になります。セクションC.5.2.6「ホスト「host_name」はブロックされています」を参照してください。--max_connect_errors = 999999999を指定してmysqldを起動すると、このエラーメッセージを回避できます。
なぜホストがブロックされるのですか??
MySQLドキュメントによると:
次のエラーが表示される場合、mysqldがホスト 'host_name'からの途中で中断された多くの接続要求を受信したことを意味します。ホスト 'host_name'は多くの接続エラーのためブロックされています。'mysqladmin flush-hosts'でブロックを解除する許可される中断された接続要求の数は、max_connect_errorsシステム変数の値によって決まります。max_connect_errorsリクエストが失敗した後、mysqldは何かが間違っている(たとえば、誰かが侵入しようとしている)と想定し、mysqladmin flush-hostsコマンドを実行するかFLUSH HOSTSステートメントを発行するまで、ホストをそれ以上の接続からブロックします。セクション5.1.3「サーバーシステム変数」を参照してください。
デフォルトでは、mysqldは接続エラーが10回発生するとホストをブロックします。次のようにサーバーを起動して、値を調整できます。
shell> mysqld_safe --max_connect_errors=10000 &
特定のホストでこのエラーメッセージが表示された場合、まず、そのホストからのTCP / IP接続に問題がないことを確認する必要があります。ネットワークに問題がある場合、max_connect_errors変数の値を増やしても意味がありません。