小技

エックスサーバーのMySQL移行ツールを使ったらサイトが表示されなくなったときの対処法


私のサイトはレンタルサーバーに「エックスサーバー(Xserver)」を使い、そこに「ワードプレス(Wordpress)」をインストールして、ウェブサイトを作成しています。
先日、だいぶ前に作ったサイトのMySQLとPHPのバージョンが古くなっていることが気になり、脆弱性などのセキュリティやSEO対策に関係してくるサイト表示速度の向上にも影響してくるので、バージョンを上げる決意をしました。
PHP.iniのバージョンを上げる前にMySQLのバージョンを上げる必要があります。
そこでエックスサーバーのサーバーパネルにある「MySQL移行ツール」という補助ツールを使って、旧バージョンのMySQLデータベースを最新バージョンのMySQLへ移行しました。
下調べをせずにボタンクリックで簡単にできるものだと誤解して、安易に行ったのがすべての失敗の始まりです。

MySQL移行ツールで行った手順

実際に私が行った、エックスサーバーのサーバーパネルから「MySQL移行ツール」を使って行った手順です。
正式な手順はエックスサーバーのこちらの手順ページをご参照ください。
以下は失敗した手順ですから(汗)。

  1. サーバーパネルメニュー「MySQL移行ツール」をクリック。
    ※設定対象ドメインで指定しているドメインで使われているMySQLが旧バージョンの場合に表示されるメニュー項目です。新しいMySQLのバージョンの場合には表示されません。
  2. [MySQL移行ツールの利用を開始する]をボタンクリック。
    ※このとき、移行時に必要な作業についての「MarioDB5.5(旧MySQL5.0)から移行した場合」「MarioDB5.5(旧MySQL5.5)から移行した場合」ぶ書かれている内容をメモしておくことをおすすめします。
  3. 各MySQLのデータベースの行にある設定項目の文字コード「UTF-8」になっていることを確認して[移行(確認)]ボタンをクリック。
  4. [MySQLx.xへデータベースの追加(確定)]をクリック。
  5. 「MySQLx.x用 phpMyAdmin」から移行後のデータベースの内容を確認します。
    ※ここを省いたのが失敗の要因の一つ
  6. ご利用プログラムの設定ファイルを編集しデータベースホスト名を変更します。
    ※ここを省いたのが大きな失敗の要因
  7. 「手順6」の変更後、該当のプログラムが正常に動作するか確認します。
    ※ここを省いたのが失敗の要因の一つ。確認は大切です。
  8. データベースの移行完了後、[バージョンをMySQLx.xに移行する(確認)]ボタンをクリック。
  9. 「バージョンをMySQLx.xに移行する(確定)」をクリックしてください。
    ※このボタンをクリックすると旧バージョンのデータベースをすべて削除され、後戻りできなくなるので、こと慎重さが求められるところです。私のような失敗をしないように慎重に行ってください。

Error establishing a database connectionでサイトが表示されなくなった

MySQLのバージョン移行が終わりました。
サイトの表示具合を確認したところ、そこに現れたのは「Error establishing a database connection」というエラー画面。
ウェブサイトの閲覧はもちろん、編集用の管理画面さえもでてきません。
複数サイトを一気に実行したため、余計に顔面蒼白です。
ここで慌てずに冷静になれるかがポイント。なんて書いてますが冷静にはなれません。
ちなみにこのエラーメッセージ「Error establishing a database connection」とは、データベース接続に関するエラーです。
それがわかれば、ワードプレスでデータベース接続に関する設定が記述されているのは「wp-config.php」ですので、真っ先にここを疑いました。
それではここからは遠回りせずに実際に私がこのエラーから復旧させた手順をメモしておきます。

wp-config.phpに記述しているホスト名が原因

「wp-config.php」に記述されている各項目はこちら

「wp-config.php」データベース記述内容
// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', 'データベース名’');

/** MySQL データベースのユーザー名 */
define('DB_USER', 'データベースのユーザー名');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'データベースのパスワード');

/** MySQL のホスト名 */
define('DB_HOST', 'データベースのホスト名');

/** データベースのテーブルを作成する際のデータベースの文字セット */
define('DB_CHARSET', 'utf8');

/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define('DB_COLLATE', '');

今回の原因はデータベース接続にあります。
そして、なぜ「MySQLのホスト名」が原因であるかと真っ先にうたぐったかというと、移行手順時に「MarioDB5.5(旧MySQL5.x)から移行した場合」に記載されていた、ホスト名変更に関する注意書き、というか変更後のホスト名が記載されている点でした。
でもメモはしていません。では、どのようにホスト名を変更するかというと、サーバーパネルにある[MySQL設定]に記載されているのです。

変更するホスト名の確認手順

[サーバーパネル]-[データベース]-[MySQL設定]の順で進んでいただき、「MySQL設定」画面の一番下の方に記載されているホスト名を確認します。

MySQL5.7 ホスト名:mysqlbb.xserver.jp
このホスト名を「wp-config.php」ファイル内のMySQLのホスト名の部分に書き換えます。
※ホスト名は例ですので、ご自身の環境の名前にしてください

wp-config.phpの書き換え場所

書き換える「wp-config.php」が保管されている場所は、FTTPで接続して、次の階層のところにファイルがあります。
[ドメイン名]-[public_html]-[wp-config.php]です。
そして書き換える場所はMySQLのホスト名の欄。

ホスト名書き換え前の以前ほホスト名の例。

/** MySQL のホスト名 */
define('DB_HOST', 'mysqlaa.xserver.jp');

次の場所に書き換えます

/** MySQL のホスト名 */
define('DB_HOST', 'mysqlbb.xserver.jp');

※ホスト名は例ですので、ご自身の環境の名前にしてください

以上で正常にウェブサイトが見れるようになりました。
何事も事前のバックアップ。そして、手順をきちんと確認しながら、要所要所でメモをとるなどして慎重に作業は行いましょう。(と、自分に言い聞かせました)

-小技