場合によっては、Amazon RDS(または他の場所)でMySQLを実行しているときに、FLUSH
を実行する必要があります。 すべてのhost
MySQLからのレコード。通常、これはエラー"Host 'host_name' is blocked"
の場合に必要です。 発生します。これにより、その特定のhost_name
からの追加の接続が防止されます。 。
host_name blocked
max_connect_errors
の数が発生するとエラーが発生します MySQLの構成で指定された値を超えています。これは、特定のホストが何度も接続に失敗したことを意味します。これは、適切な資格情報を持たないホスト/ユーザーからの不当な攻撃を防ぐためにMySQLによって実施されているセキュリティ対策ですが、誤って発生する可能性があり、ホストをフラッシュすることで解決する必要がある場合があります。
フラッシングホストは何をしますか?
適切な権限を持つMySQLユーザーを使用して、FLUSH
を実行します ステートメント、MySQLは、渡されたoptions
に応じて、フラッシュテーブル、ロック、および内部キャッシュシステムをクリアできます。 。 FLUSH HOSTS;
の場合 、MySQLはホストキャッシュを空にします。これは、事実上、現在または最近接続されたホストのMySQLの記録がリセットされ、そのホストからのさらなる接続を可能にすることを意味します。
FLUSHHOSTを直接実行する
MySQLへの接続が完全に妨げられている可能性がありますが、場合によっては、システムがプライマリまたはroot
のみが使用できる接続スロットを「保存」する可能性があります。 アカウント。
Amazon RDS
の場合 、このユーザー名は通常、デフォルトまたは「マスター」として管理コンソールに表示されます。このプライマリユーザー名でMySQLサーバーに接続してみてください。
接続できる場合、ホストのフラッシュはFLUSH HOSTS;
を実行するのと同じくらい簡単です。 MySQLステートメント:
FLUSH HOSTS;
これで、host_name blocked
をクリアする必要があります エラーが発生し、標準のMySQLアカウントに接続できるようになります。
MySQLAdminを使用してホストをリモートでフラッシュする
マスターアカウントとしてMySQLに接続できず、引き続きblocked
を受信している場合 エラーが発生した場合、次のオプションはサーバーにリモートで接続してflush
を実行することです mysqladmin
を使用したコマンド ツール。
これを行うには、別のに接続する必要があります エラーを生成しているRDSサーバーにアクセスできるEC2インスタンスまたはサーバー。
接続したら、<>
の間に適切なオプションを置き換えて次のコマンドを実行します :
$ mysqladmin -h <RDS_ENDPOINT_URL> -P <PORT> -u <USER> -p flush-hosts
成功した場合、flush-hosts
コマンドは期待どおりに実行され、通常どおりMySQLに接続できるようになります。
RDSインスタンスの再起動
他のすべてが失敗した場合の最後のオプションは、RDS管理コントロールパネルにログインし、エラーが発生しているRDSインスタンスを手動で再起動することです。これにより、hosts cache
が効果的にリセットされます 実稼働環境では理想的ではないかもしれませんが、あなたにとっては。