xrea.com サーバの MySQL の MyISAM テーブルが壊れたら
オープンソース の CMS nucleus のページを閲覧していると、大量に下記のようなエラーが・・・。
mySQL error with query SELECT COUNT(*) FROM nucleus_comment as c WHERE c.citem=****: Can't open file: 'nucleus_comment.MYI'. (errno: 145)
どうやら MySQL の MyISAM のテーブル nucleus_comment のインデックスファイルが壊れた模様。
MyISAM テーブルが壊れたら MySQL サーバを停止して、myisamchk を実行するのが定番なのだが、何せ共用サーバの1ユーザなので MySQL サーバを停止するなどできない。
仕方なく、MySQL サーバを動作させたまま、xrea.com のサーバに SSH でログインして myisamchk を実行しようとするも、「.MYI」ファイルに対して「アクセス権限がないよ」とはじかれる。
最悪、サポートに連絡して myisamchk を実行してもらうしかないかと思っていたが、しばし検索してみると
REPAIR TABLE nucleus_comment;
という SQL 文である程度修復してくれることが判明。REPAIR TABLE 構文
この SQL を phpmyadmin から実行するもよし、SSH でログインしてから mysql に接続し、コマンドラインから実行してもよしだ。修復にはしばらく時間を要するようだ。
修復した nucleus_comment テーブルをみて驚いた。ものすごいコメント SPAM である。その数 65,000件以上。これらのコメントを全て削除し、登録ユーザのみがコメントできるように nucleus の設定を変更して事なきを得た。