web-dev-qa-db-ja.com

多くの接続エラーでMySQL接続がブロックされるのはなぜですか?

ご覧のとおり、データベース接続に問題があります。それは私にこのエラーを与えます:

...多くの接続エラーが原因でブロックされています

いくつかの回答を検索しましたが、問題を解決できませんでした。

必要な情報をすべて提供したかどうかはわかりませんので、他に必要なことがあれば教えてください。別のコンピューターからのデータベース接続があり、データベースにアクセスするためにユーザーを作成しましたが、%のホスト行にあるため、セキュリティ問題のためにIPアドレスで変更したかったのですが、このエラーが発生したため、今は行き詰まっています。

17
Nick

MySQLは、接続中にエラーが発生したクライアントをブロックし、不正なクライアントからMySQLを保護します。

そのため、まず、エラーの種類を見つける必要があります。

データディレクトリのMySQLエラーログを確認できます。 (通常hostname.err

または、max_connect_errors(現在の値とは)を増やすことができます。最大値はアーキテクチャによって異なります。 32ビット、4294967295。64ビットの場合は18446744073709547520。 ( 手動

mysql> SET GLOBAL max_connect_errors = 100000000;

ただし、エラーが頻繁に発生する場合、これは現実的な解決策ではありません。

FLUSH HOSTSは、現在ブロックされているホストを排除するのに役立ちます。

mysql> FLUSH HOSTS;

Mysqlコンソールの外部から実行する場合は、mysqladminコマンドを使用します。

# mysqladmin flush-hosts
27
Jason Heo

最初に、次のコマンドを使用してローカルMySQLをフラッシュします。

mysqladmin -u [username] -p flush-hosts
**** [MySQL password]

または

mysqladmin flush-hosts -u [username] -p
**** [MySQL password]

ネットワークMySQLサーバー:

mysqladmin -h <ENDPOINT URL> -P <PORT> -u <USER> -p flush-hosts
mysqladmin -h [END POINT URL] -P 3306 -u [DB USER] -p flush-hosts 

追加の提案では、my.iniファイル[Mysql構成ファイル]を編集することにより、多くの接続エラーのブロックの問題を永続的に解決できます。

変数の変更max_connections = 10000;

または

コマンドラインを使用してMySQLにログインします-

mysql -u [username] -p
**** [MySQL password]

以下のコマンドをMySQLウィンドウに配置します

SET GLOBAL max_connect_errors=10000;
set global max_connections = 200;

コマンドを使用して真正を確認します

show variables like "max_connections";
show variables like "max_connect_errors";
2
Syeful Islam