wordpressログインできなくなった

wordpressログインできなくなった

困ったこと

TKBlog(wordpress)のログインができなくなりました。TKBlogを立ち上げて2日目の出来事です。もう一度作り直すという判断もできたと思いますが、なんとかほぼ復元できました。

問題①(ログインできない)

パスワードを変更したのだが、そのパスワードを失念してしまいました。理由としてはランダム文字列のパスワードを使用していたのですが、メモを取ったつもりが保存されていなくPCを再起動してしまった為復元できませんでした。

問題②(ログイン画面が表示できない)

SiteGuard WP Plugin(セキュリティ系プラグイン)を入れたのですが、管理者用ログイン画面が表示できない状態でした。プラグインのログインページ変更機能が有効になっているがリダイレクト先が404(お探しのページはありませんでした。)になってしまう。

解決する為に行ったこと

問題①に対する解決策

phpMyAdminでパスワードを変更するということを行いました。ログイン画面からパスワードをリセットするということも考えたのですが、問題①にあるとおりログイン画面にうまくアクセスできなく、なんとかログイン画面にたどり着いた後リセットしようとしたところ「メールを送信できませんでした。ホスティングサービス上で mail() 関数が無効になっている可能性があります。」とのことでした。

問題②に対する解決策

.htaccess から SiteGuard WP Plugin による記述を削除しました。ログインできれば管理画面から単純に無効化すればいいとだけと思うのですが、、、。

解決する為の課題

1つ目

.htaccessを操作する為にSSH接続する術がわからなかった。理由としてはAmazon EC2にWordPress powered by BitNami で構築した環境であるのだが、WordPress ウェブサイトを立ち上げるを参考にキーペアなしでインスタンスを作ってしまいました。何故、キーペアなしでの案内なんでしょうか。。。

2つ目

phpMyAdminって食べ物ですか?という状態でした。聞いたことないものは触りたくないですからね。

解決した手順

※細かい手順等はは割愛しています。大変恐れ入りますが、各キーワードからインターネット検索等で手順をご確認ください。

1.インスタンスの複製

イメージの作成

SSH接続できるようにする為にAWSのインスタンスを複製します。EC2ダッシュボードの左のメニュー「インスタンス」を選択し、コピーしたいインスタンスを選択します。アクションのプルダウンメニューから、「イメージ」-「イメージの作成」をクリックします。(インスタンス停止状態で実施したほうがよいかな。)入力する必要があることは入力し「イメージの作成」をクリックし、待ちます。

AMIからインスタンスを作成

EC2ダッシュボードの左のメニュー「AMI」を選択し、先ほど作成したイメージを選択し「作成」をクリックします。AMIを元にしてインスタンスを新規に作成するので、ここは新規インスタンスを作ると同じことを行っていきます。が、キーペアを定義して作成をします。キーペアがないとSSH接続できません。

セキュリティグループの変更(インスタンス作成時に設定しなかった為)

自分はEC2ダッシュボードの左のメニュー「インスタンス」を選択し、変更したいインスタンスを選択します。アクションのプルダウンメニューから、「ネットワーキング」-「セキュリティグループの変更」をクリックします。今回は複製をしたかったので「WordPress Certified by Bitnami…」を選択。

その他諸々の変更

IPアドレスを固定IPに変更、DNS設定等を実施。

これでインスタンス複製までは完了。ブラウザからもアクセスできます。

2.SSH接続し、.htaccessを変更

リモートログオンクライアントで接続

自分はTera Termをリモートログオンクライアントとして使用しています。Tera Term起動後、ホストにIPv4 パブリック IPを入力しSSHを選択し「OK」をクリックします。ユーザ名は「bitnami」と入力。「user」や「ec2user」ではないので注意が必要です。鍵に先ほど作成したキーペアを使用することで接続できます。

.htaccessを修正

.htaccess から SiteGuard WP Plugin による記述を削除します。削除対象は#SITEGUARD_PLUGIN_SETTINGS_START から#SITEGUARD_PLUGIN_SETTINGS_END までです。

#移動
cd /opt/bitnami/apps/wordpress/htdocs/
#バックアップ取得
cp .htaccess .htaccess_bk
#ファイルの修正
sudo vim .htaccess
#移動
cd /opt/bitnami
#アパッチ再起動
sudo ./ctlscript.sh restart apache

これでブラウザから下記にアクセスすれば管理者用ログイン画面がでます。

http://ドメイン名/wp-admin/

3.phpMyAdminでパスワードを変更

httpd-app.conf を変更し、phpMyAdminをブラウザから接続

httpd-app.confを変更し、ローカル以外のアクセスを許可します。
変更前

<IfVersion < 2.3 >
Order allow,deny
Allow from 127.0.0.1
Satisfy all
</IfVersion>
<IfVersion >= 2.3>
Require local
</IfVersion>

変更後

<IfVersion < 2.3 >
Order allow,deny
Allow from all
Satisfy all
</IfVersion>
<IfVersion >= 2.3>
Require all granted
</IfVersion>
#移動
cd ~/apps/phpmyadmin/conf/
#バックアップ
cp httpd-app.conf  httpd-app.conf_bk
#ファイルの修正
vim httpd-app.conf
#移動
cd /opt/bitnami
#アパッチ再起動
sudo ./ctlscript.sh restart apache

これでブラウザから下記にアクセスすればphpMyAdmin へようこそ画面がでます。

http://{インスタンスのIP}/phpmyadmin/

DBのユーザ名とパスワード確認

wp-config.phpに記載されているユーザ名とパスワードを確認する

view /home/bitnami/apps/wordpress/htdocs/wp-config.php
/** MySQL database username */
define('DB_USER', 'ユーザ名記載有');

/** MySQL database password */
define('DB_PASSWORD', 'パスワード記載有');

wp_usersテーブルのパスワードを更新

phpmyadminからDBにログインし、wp_usersテーブルのuser_loginが対象のユーザ名であるuser_passを更新します。ハッシュ値に変換したパスワードで更新する必要があります。

更新したパスワードでログインできます。

4.phpmyadminとは

ただのDBを操作するデータベース接続クライアントツールでした。A5:SQL Mk-2、CSE、SQL Server Management Studio、pgAdmins等と同等でした。。。恐れるに足らず。

phpMyAdmin(ピーエイチピーマイアドミン)はMySQLサーバーをウェブブラウザで管理するためのデータベース接続クライアントツールで、PHPで実装されている。 phpMyAdminを用いることで、SQL文を記述することなく、MySQLのデータベースに対して様々な操作が行える。 また、ユーザが任意のSQL文を記述して実行することもできる。

引用:Wikipedia

まとめ

ログインできなくなった時は正直ヒヤっとしました。自分はパスワードをよく忘れてしまったり、消してしまうことは多い人間ですが、ここでもこういうことが起こるのかと泣きたくなりました。しかし、いろいろと調べながら解決できたのでよかったです。また、それ以上に今後に繋がるようなことを知れたと考えてます。まだ、下記のような課題が残っているので順次解決したいと思います。

  • パスワードリセットの為にメールが送れるようにする
  • SiteGuard WP Pluginを適切に設定し、セキュリティを強化する
  • 資材管理(バックアップ等)を行う