ドメインが死んでもデータベースを救い出す方法【Adminer】 | G.C.M Records

Webデザイン・サイト運用アイキャッチ

ドメインが死んでもデータベースを救い出す方法【Adminer】

こんにちは、ボカロPのgcmstyle(アンメルツP)です。

Webサイト制作に関する仕事に携わっていると、いろいろなトラブルを経験することもあります。
今回はその中から、「ドメインが失効してサイトにアクセスできなくなった」ケースから
データを救い出した方法の忘備録です。

【状況】ドメインが失効し、通常のURLでは入れない

あるWordPressサイトで、以下のような状況が発生しました。

  • ドメインが失効しており、通常のURLではサイトにアクセスできない
  • レンタルサーバー上にはデータが残っている
  • FTP情報だけは把握していた
  • しかしデータベースはサーバー内部からしかアクセスできない設定になっていた

WordPressの「中身」(記事、固定ページ、設定、ユーザーなど)はデータベースに保存されています。
FTPでファイルを取り出せても、データベースがなければサイトを復元することはできません。

通常であれば、レンタルサーバーの管理画面(phpMyAdmin)からエクスポートすればいいのですが、
その情報もないので管理画面にもアクセスできない状態です。

解決策の概要

今回はIPアドレスの情報があったので、hostsファイルを設置しAdminerで救い出しました
「ドメインが死んでいても、こちらのPCだけ”行き先”を強制してサーバーへ到達させ、サーバー上に”臨時のDB管理ツール”を置いてエクスポートする」というやり方ですね。

手順1:サーバーのIPアドレスを特定する

まず、データが残っているサーバーのIPアドレスを調べます。

レンタルサーバーの場合、サーバーパネルの仕様情報に記載されていることが多いですが、
アクセスできない場合、サーバーのホスト名がFTP情報からの推測などでわかっていれば
nslookup コマンドでIPを割り出せます。

nslookup サーバーのホスト名

これで、サーバーのIPアドレス(例:xxx.xxx.xxx.xxx)が得られます。

手順2:PCのhostsファイルを書き換える

次に、自分のPCだけで「このドメインはこのIPへ行く」という設定を行います。

Windowsの場合、以下のファイルを管理者権限で編集します。

C:\Windows\System32\drivers\etc\hosts

ファイルの末尾に、以下のような行を追加します。

xxx.xxx.xxx.xxx    example.com
xxx.xxx.xxx.xxx    www.example.com

xxx.xxx.xxx.xxx は手順1で調べたIPアドレス、example.com は失効したドメイン名に置き換えてください)

これにより、外部のDNSを経由せずに、
ブラウザからドメイン名でサーバーへ直接アクセスできるようになります。

※これは自分のPCだけに適用される一時的な設定です。作業完了後は必ず削除してください。

手順3:サーバー上でプログラムが動くことを確認する

実際にデータベースを操作する前に、
FTPでサーバー上に小さなテストファイルを置いて動作確認します。

<?php
// check-xxxxxx.php(ファイル名はランダムな文字列を含めてください)
echo "PHP動作OK - " . date('Y-m-d H:i:s');

このファイルをドキュメントルート(public_html など)にアップロードし、
ブラウザから http://example.com/check-xxxxxx.php にアクセスして動作を確認します。

「PHP動作OK」と表示されれば、次のステップへ進めます。

手順4:Adminerを設置してデータベースをエクスポート

データベースを操作するために、Adminerというデータベース管理ツールを使います。

Adminerとは?

Adminerは、PHPファイル1つだけで動作する軽量なデータベース管理ツールです。
phpMyAdminと同様の機能(データの閲覧、エクスポート、インポート等)を持ちながら、
インストール不要で、FTPでアップロードするだけで使えるのが大きな特徴です。

MySQL、PostgreSQL、SQLite、MS SQL、Oracleなどに対応しています。
phpMyAdminが使えない環境や、今回のような緊急時には非常に便利です。

▼ Adminer公式サイト
https://www.adminer.org/

公式サイトから最新版のPHPファイルをダウンロードします。
「Adminer」と「Adminer Editor」がありますが、今回使うのは「Adminer」の方です。

Adminerのセットアップ

ダウンロードしたファイルの名前を、ランダムな文字列を含めたものに変更します。
ファイル名を推測しにくくすることで、第三者に発見されるリスクを軽減できます。
「adminer.php」のような分かりやすい名前のまま置くのは絶対に避けてください。
可能ならば、.htaccessでIPアドレスや認証などのアクセス制限をかけたほうがいいでしょう。

FTPでサーバーのドキュメントルート(public_html など)にアップロードし、
ブラウザから http://example.com/ファイル名.php にアクセスします。

データベースへのログイン

Adminerのログイン画面が表示されたら、以下の情報を入力します。
これらの情報は、WordPressの wp-config.php ファイルに記載されています。

  • サーバー: DB_HOST の値(今回の場合は localhost
  • ユーザー名: DB_USER の値
  • パスワード: DB_PASSWORD の値
  • データベース: DB_NAME の値

データベースのエクスポート

ログイン後、左メニューの「エクスポート」をクリックします。
出力形式は「SQL」を選択し、テーブルは全て選択した状態で「エクスポート」を実行します。

これで、WordPressのデータベース全体がSQLファイルとしてダウンロードされます。

手順5:必ず後片付けをする

作業が完了したら、必ず以下の後片付けを行ってください

  • Adminerファイルを削除
  • テストファイルを削除
  • PCのhostsファイルから追加した行を削除
  • 取得したSQLファイルを安全な場所に保管

Adminerを放置すると、第三者にデータベースを操作される危険があるため、絶対に削除を忘れないでください。

この方法で救出できたもの

上記の手順により、以下のデータを救出できました。

  • WordPressの「中身」(記事、固定ページ、設定、ユーザー等)を含むデータベースのバックアップ(SQL)
  • FTP経由で取得したテーマ・画像・プラグイン等のファイル一式(wp-content)

これらがあれば、新しいドメイン・新しいサーバーにWordPressを用意して、
SQLをインポートし、wp-contentを配置すればサイトを復元することができます。

今後のための教訓

このようなトラブルを未然に防ぐために、日頃から以下を意識しておくと良いでしょう。

  • ドメインとサーバーの管理情報は、必ず控えておく
  • 更新期限のリマインダーを設定しておく
  • 定期的にバックアップを取得する習慣をつける

自分で管理している特にWordPressの場合、
バックアップ系のプラグイン(UpdraftPlusなど)を使っておくと、
いざというときにも慌てずに済みます。

おわりに

今回ご紹介した方法は、あくまで他に手段がない緊急時のための対応策です。
通常の状況であれば、サーバー管理画面からのエクスポートが最も安全です。

しかし、Web制作の現場では予期せぬトラブルが起きることがあります。
そんなときにこの方法を知っておくと、いざというときに選択肢が広がるかもしれません。

前の記事「」へ

著者「アンメルツP」について

関連記事・広告

記事をシェアする