ホスト 'host_name'がMySQLでブロックされている理由は何ですか?


12

間違ったパスワードを使用してmysqlサーバーに接続し、テストカウントがを超えたmax_connect_errors場合、テストカウントAborted_connectsとしても発生しますが、ホストはまだブロックされていません。

そうAborted_connects超えるmax_connect_errorsその後、host_nameにはブロックされていますか?

回答:


8

この時点で、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変数の値を増やしても意味がありません。


これらのエラーが通常のMySQLエラーログに記録されるようには見えません。ホストブロッキング接続エラーのログを表示する方法はありますか?また、上記の「連続して」に注意しました。だから、ちょうど間に成功した接続が必要ですか?または、新しい質問をするだけですか?
マークL.

1

このようなブロックの原因の1つは、ホスト上のランダムな人がMySQLの監視を行うことを決定し、リモートサーバー上のMySQLポートにTelnetをセットアップすることです。十分な数のtelnet呼び出しにより、ホストはそのMySQLサーバーへの以降のアクセスからブロックされます。一部のサーバーとは異なり、MySQLは適切な時間が経過しても自動的にアクセスのブロックを解除しません。サーバー管理者はMySQLの頭を痛めなければなりません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.