- ベストアンサー
突然MySQLへアクセス出来なくなりました
いつもお世話になっております。 昨日の夜までアクセスできていたMySQLサーバに、本日の朝からアクセスできなくなっております。 PHPのエラー文は下記の様になっております。 『Warning: mysql_connect(): Host '***.***.***.**' is blocked because of many connection errors. Unblock with 'mysqladmin flush-hosts'』 これを翻訳ソフトで直訳すると、 『多くの接続エラーのため、ブロックされる。『mysqladmin紅潮-ホスト』で点数の多い札を出しなさい』 という意味のわからない内容になってしまい、原因がさっぱりわかりません。このエラーの意味をどなたか教えてください!お願いします!!
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
説明不足でした。 Linux(OS)のユーザ、MySQL(アプリケーション)のユーザがそれぞれあり、phpMyAdminで特権表示されているのは、MySQLのユーザの権限です。 しかるべきLinuxのユーザでログインし(・・・にスイッチし)、 しかるべきMySQLのユーザで、MySQLにコマンドを実行する必要 があります。具体的には、 Linuxのユーザ=mysql MySQLのRELOAD権限を持つユーザ=root とすれば、 # su - mysql $ mysqladmin -u root -p flush-hosts <ここでrootのパスワードが求められるので入力すると実行される> というようになります。
その他の回答 (2)
- copymaster
- ベストアンサー率81% (83/102)
MySQL5だと参考URLに情報がありました。 デフォルトで、同じホストから10回アクセスに失敗するとブロックされる?ようです。 mysqladmin flush-hosts は、おそらくrootでは実行できないのでは。mysqldを実行しているユーザにスイッチして、コマンドを実行できませんでしょうか。 # ps -aux | grep mysqld とかで、mysqldを起動しているユーザをしらべて、たとえばmysqlユーザで起動していれば、 # su - mysql $ mysqladmin flush-hosts とトライしてみては? ただ、アクセスした覚えがなければ、総当りアタックを仕掛けられた可能性もありますので、あとで調査が必要です。
補足
ありがとうございます。 早速mysqlユーザに切替えて実行してみました。 しかし、別のエラーで実行されませんでした。 エラーコードは 『Access denied. You need the RELOAD privilege for this operation』 という内容で、このアカウントにはリロード特権がないというようなメッセージでした。 しかし、phpMyAdminで特権をチェックすると、このアカウントにはreload特権が含まれております。 なんで出来ないのでしょうか?これはサーバの設定の問題なのでしょうか?? 取り急ぎ、サーバの再起動をする事でアクセスできない問題は解消しました。しかし、今後も同じ事が起こりうるので、できれば、この問題も解消したいです。
- sanchan223
- ベストアンサー率0% (0/1)
このエラーは環境・状況に左右されるものです。 ファイアウォール関連とか、 ブラウザをインストールしたとか、 ウィルスとか、 サーバ攻撃など。 #1の答えも読解力が足りない気がします。 英訳せよ、という問いだと思いましたか?
補足
恐らくサーバの攻撃が関係しているようです。 ネットで調べてみたところ、コマンドラインから mysqladmin flush-hosts を実行する必要があるようです。そこまでは突き止めたのですが、SSHでroot権限にてサーバにアクセスしてもmysqladminが実行できません。 私もサーバ会社の人間ではなく、専有サーバの利用者なので、私のアカウントも完全なるroot権限ではないようなのです。 本当に困った【><。】
お礼
ありがとうございます!!できました!!! OSのユーザとMySQLのユーザ、この2点が存在し、コマンドラインから実行するには、両方のアカウント情報が必要なんですね。 いままでphpMyAdminしか使った事が無かった為、コマンドラインでのMySQLの取り扱い方がまるで分りませんでした。 本当に助かりました!これで、これから同じ現象が発生してもすぐ対応できます! 本当にありがとうございます!!