WordPressにログイン出来ない致命的な症状

※本ページはプロモーションが含まれています

WordPress
スポンサーリンク

wordpress banner photo

同サーバー上にて、別で運用しているWordPressサイトに突然ログインが出来なくなってしまいました。

どうせ、ログイン・パスワードが間違ってるんじゃね?

いや、何度、試してもあってます

保存しているパスワードでもログイン出来ないし・・

それに、パスワードが間違ってますとエラーも出てなくて、無反応なの?

だったら、一度、パスワードリセットしてみ!

パスワードをお忘れですか?をクリックして、登録したユーザーかメアド入れてポチっとな

ログイン出来ない症状

すると、「データベースパスワードのリセットキーを保存できませんでした。」とのエラーメッセージが・・

Wplogin20160419 1

あ〜、これは、きっと前記「休日にバージョンアップ作業で久々にハマった」の後遺症なんだと、薄々感じました。

対策1 WordPressデバッグを有効にしてみる

通常はwp-config.phpにて、デバッグ機能はオフになっているので、有効にします。
デバッグが有効なら、ディスプレイ表示をせずに、ログとして記録する設定です。

#define('WP_DEBUG', false);
define('WP_DEBUG', true);
if (WP_DEBUG) {
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors',0);
}

デバッグ機能を有効にしても、何の変化もなしでした。

対策2 MySQLでチェックしてみる

WordPressを運用しているサーバーにログインし、対象のデータベースをチェックし、必要なら修復を試みる

確認

$ mysqlcheck -c <db_name> -u root -p

修復

$ mysqlcheck -r <db_name> -u root -p

特に問題なし

対策3 データベース上のテーブルを直接変更してみる

私の場合は、Webminを使って、パスワードの変更を試みました。
phpmyadminでも可能ですが、パスワードはMD5ハッシュ値なので、そこだけ注意です。

Webmin上のサーバーからMySQLを選び、必要となるデータベース、テーブル(wp_users)を選択し、ログイン・パスワードのデータを表示させます。
Wplogin20160419 2

「選択された行を編集」をクリックして、パスワードを変更

Wplogin20160419 3

すると、更新が適用されずに下記のエラー

Got error -1 from storage engine

対策4 再度、コマンドラインで修復を試みる

対策2では、mysqlcheckを使ったが、データベース内に入り、直接、テーブルの修復を試みる。

$ mysql <db_name> -u root -p
mysql> REPAIR TABLES wp_users;

| wp_db.wp_users | repair | note | The storage engine for the table doesn’t support repair |

どうやら、ストレージエンジンが InnoDB である DB はサポートされていないので、修復出来ないらしい

さらに、wp_usersを新規に作りなおしてみる

$ mysql <db_name> -u root -p
mysql>CREATE TABLE wp_users_new LIKE wp_users;
INSERT INTOwp_users_new SELECT * FROM wp_users;

はい、やはりダメでした。

ここで正常に新規のテーブルへ挿入できれば、古いテーブルを削除して、新しいテーブルの名前を戻せばOKです。

DROP TABLE wp_users;
RENAME TABLE wp_users_new TO wp_users;

対策5 InnoDBの修復

テーブル破損で、対象のデータベースを再構築する必要が生じてきた。

前記で、MySQLの起動が、リカバリーモードを有効にしないと立ち上がらない事を考えると、InnoDBの不具合が起きているだろうとの事から、最悪の、データベース再構築で全入れ替えです。

この作業では、長文になるため、下記の記事を参考にし、割愛させていただきます。
参考記事
https://kb.plesk.com/jp/6586

具体的な手順は下記のようになります。

  1. mysql停止
  2. /var/lib/mysqlをバックアップ
  3. リカバリーモードでmysql起動
  4. 全データベースのバックアップ
  5. /var/lib/mysql内を削除
  6. リカバリーモードを無効にして、mysql再起動
  7. 全データベースをリストア

これで、リカバリーモードなしでMySQLが起動し、InnoDBも再構築されて、スッキリ復旧完了です。

まとめ

参考にした記事では、詳しく復旧の手順が記されており、今回のデータベース復旧に関して、大変参考になり、この場をお借りして感謝申し上げます。

WordPressにログイン出来ないと、投稿や管理すら出来なくなってしまい焦りますが、今回のように、普段Linux等に触れない方にとっては、かなり敷居が高い対策となってしまいます。

WordPressにおいては、データベースが本命ですので、バックアップは必ずとっておきましょう。
バックアップのプラグインもあるので、一度設定しておけば、サーバー内及びメールでも定期的にバックアップが送られてくるので、是非、設定しておくことをおすすめします。

また、データベースが壊れる以外にも、サーバー内のHDD,SSDが逝ってしまう事もありますので、必要なファイルもバックアップしておくと万全ですね。

 

コメント

タイトルとURLをコピーしました