おはよう。今日の記事は、個人でブログやWebサイトを運営していて、サーバーのデータベースをMySQL5.7→8.0に移行したいときに、あなたがきっと躓くポイントを、先回りして解決できるようにまとめた実体験メモだ。作業そのものは手順通りに進めれば難しくない。だけど、途中で出るエラーや、現実的な「作業環境の壁」で止まる人が多い。僕もそこに時間を使った。だからこそ、同じところで立ち止まる人が少しでも減るように、要点を厚めに残しておく。
ロリポップ!でMySQLを 5.7 → 8.0 に移行してみた(WordPress)
WordPressのサイトヘルスで、こんな表示が出た。
「MySQL 8.0以上のバージョンアップを検討して下さい」
この警告が出ると、放置していいのか不安になる。結論から言うと、ロリポップ!環境では「MySQLのバージョンを上書き更新」みたいな簡単な話ではなく、新しくMySQL8.0のデータベースを作って、旧DBから中身を移す流れになる。つまり、移行作業だ。
でも、ロリポップにログインしてデータベース周りを触ろうとすると、こう書いてあって一瞬ひるむ。
データベースについては基本的にサポート外とさせていただきます。
詳しい知識がある方のみご利用ください。
これを見ると、もう諦めたくなる気持ちも分かる。
ただ、実際にやること自体は、手順を丁寧に踏めば難しくない。
問題は「詰まるポイント」がいくつかあって、そこに当たった瞬間に、一気に不安が跳ね上がることだ。逆に言えば、詰まる場所を先に知っていれば、ストレスはかなり減る。僕が実際にやって止まったところも含めて、手順と注意点をまとめておく。
◾️ 全体の流れ(ざっくり)
- バックアップ(ファイル+DB)
- 旧データベースをエクスポート(SQLを吐く)
- MySQL8.0の新データベースを作成
- 新データベースへインポート
◾️【重要】MySQLファイルの編集とエラー対処──ここで詰まる人が一番多い
◾️ #1046 – No database selected の対処方法
◾️ #1044 – Access denied の対処方法
◾️ MySQLファイル(SQL)の編集手順(巨大ファイル問題の現実) - wp-config.php を新DB用に書き換え
- 表示・管理画面・プラグインなど動作確認
◾️ ① まずバックアップ(これが保険)
作業前に必ずバックアップを取る。安全性を高めるため、最低でも以下2つをセットで残す。
・WordPressファイル一式(FTPで取得)
・データベース(phpMyAdminでエクスポート)
ここで現実的な話をすると、ロリポップには自動バックアップのサービスが用意されている。ただしこれは有料で、サブスク形式で毎月コストがかかる。長期運用としては安心材料になるが、今回のように「データベース移行のために一時的に保険をかけたい」という目的であれば、そこまでの装備は不要だと思う。単発の手動バックアップで十分だ。
また、ロリポップのFTP画面(ブラウザ)からの操作は、正直かなりやりにくい。特にWordPressのファイル一式のように、数が多く階層も深いものをダウンロードしようとすると、かなりのストレスになる。
だから僕は、無料のFTPアプリをインストールして、FTP経由でファイルを丸ごと落としてバックアップした。この方法がとても快適で、転送も安定していてサクサク進んだ。バックアップ作業が軽いだけで、データベース移行全体の心理的ハードルが一気に下がる。
◾️ ② 旧データベースをエクスポート(SQLを作る)
ロリポップ側で、旧データベースのphpMyAdminを開いてエクスポートする。このとき、後で詰まる人が多いので先に言う。エクスポート設定の一部がデフォルトのままだと、インポート時にエラーが出る。(対策は後述)
◾️ ③ MySQL8.0 の新データベースを作る
ロリポップの管理画面から新規にデータベースを作成する。作成時にMySQL8.0になっていることを確認。新DBの情報はあとで必ず使うので、以下を控える。
・DB_NAME(新データベース名)
・DB_USER(ユーザー名)
・DB_PASSWORD(パスワード)
・DB_HOST(ホスト名)
これらの情報は、このあとSQLのインポートやwp-config.phpの書き換えで必須になる。だから、メモに控えておくか、管理画面の該当ページを開いたままにして、いつでもコピペできる状態にしておくといい。特にDB_HOSTは必ず参照することになるので、ここを手元に残しておくかどうかで作業のスムーズさが変わる。
◾️ ④ 新データベースへインポート
新DB側のphpMyAdminで、エクスポートしたSQLをインポートする。ここでエラーが出たら、ほぼこの2つ。
◾️【重要】MySQLファイルの編集とエラー対処──ここで詰まる人が一番多い
移行作業は手順通り進めれば進む。ただし、インポート時のエラーだけは別。ここで一度止まると、原因が分からず不安になりやすい。実際、僕自身もこの段階でかなり時間を使った。だからこそ、ここは厚めに書いておく。
インポート時に発生しやすいエラーは、ほぼこの2つに集約される。
・#1046 – No database selected
・#1044 – Access denied
順番に見ていく。
◾️ #1046 – No database selected の対処方法(チェックを入れる場所はここ)
これは「データベースが選択されていません」というエラー。原因は、phpMyAdminでエクスポートするときの「追加コマンド」がデフォルトのまま(=未チェック)になっていること。
ポイントはここ。
・エクスポート時
・生成オプションの「追加コマンド」
・以下2つにチェックを入れる
⚫︎ DROP DATABASE IF EXISTS コマンドを追加する
⚫︎ DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT / TRIGGER コマンドを追加する

これだけで回避できる。
◾️ #1044 – Access denied の対処方法
#1044 – Access denied for user ‘[user_name]’ to database ‘[db_name]’
意味としては、「ユーザー ‘[user_name]’ は、データベース ‘[db_name]’ にアクセスできません」
これは、SQLファイル内に書かれているデータベース名と、実際にインポート先として作成した新しいデータベース名が一致していない場合に発生する。ロリポップではMySQL8.0用に新しいデータベースを作成する流れになるが、同じデータベース名は設定できない。結果として、旧DB名と新DB名が必ず違う状態になりやすい。ここを理解せずにそのままインポートすると、#1044 が出る。
◾️ MySQLファイル(SQL)の編集手順(巨大ファイル問題の現実)
やることは、SQLファイル内のデータベース名を新DB名に置き換えるだけ。でも、現実にはもう一段ハードルがある。SQLファイルが巨大すぎて、普通のメモ帳や軽いエディタだと開けない。固まる。落ちる。
だから僕は、EmEditor(64-bit)を入れて編集した。巨大ファイルでも普通に開けるし、検索・置換も安定していて、ここで一気に作業が進んだ。
手順は以下。
- エクスポートしたSQLファイルをエディタで開く
- SQL内に書かれている「古いデータベース名」を探す(検索機能を使えばいい)
- それを「新しいデータベース名」に置き換える
・CREATE DATABASE
・USE データベース名
などの記述が並んでいるので、そこにあるデータベース名を新DB名へ差し替える。このズレが残っていると、インポートは必ず失敗する。
◾️ ⑤ wp-config.php の編集と保存(最終仕上げ)
SQLのインポートが終わったら、WordPress側の接続先を切り替える。編集するのは、WordPressルートにあるwp-config.php。
編集・確認するのは次の5点。
・DB_NAME:WordPressのデータベース名
・DB_USER:データベースユーザー名
・DB_PASSWORD:データベースパスワード
・DB_HOST:データベースのホスト名
・table_prefix:テーブル接頭辞(基本触らないが念のため確認)
編集できない場合は、一時的に属性を変更して書き込み可能にする(例:400→600)。保存後は戻す。
◾️ ⑥ 最後に動作確認(落ち着いてチェック)
切り替えたら、あとは確認。
・サイト表示が崩れていないか
・管理画面に入れるか
・プラグインのエラーが出ていないか
・サイトヘルスの警告が消えているか
この段階まで来れば、勝ちだ。
◾️ まとめ
ロリポップのMySQL移行は、「ボタン一発で更新」じゃない。新DBを作って移すという、ちゃんとした移行作業になる。でもポイントさえ押さえれば進む。
・バックアップはFTPアプリでサクサクやった方が楽
・SQLが巨大で開けない問題は、巨大ファイルに強いエディタを使う
・エラーは #1046 と #1044 が大半で、原因が分かればすぐに乗り越えられる
この作業はセンスではなく、知っているかどうかだけの話だ。同じところで立ち止まる人が少しでも減ればいいと思って、体験者として厚めに残しておいた。
さて、今日も、こういったテクノロジーのみんなの積み重ねの技術に感謝しながら、今日も感謝して一生懸命生きていこう。同じ時を過ごす家族や仲間たちと支え合い、笑い合い、楽しくやっていくために。では今日も、愛と感謝を胸に。またね。


