WordPressサイトの移転作業中、phpMyAdminでデータベースをインポートしようとしたら、こんなエラーに遭遇して頭を抱えていませんか?

MySQL のメッセージ: #1044 – ユーザー ‘xxxx’ によるデータベース ‘yyyy’ へのアクセスは拒否されました。

「データベースもユーザーもちゃんと作成したはずなのに、なぜアクセスが拒否されるの?」と、私も最初は混乱しました。

実はこのエラー、IDやパスワードの間違いではなく、インポートしようとしている.sqlファイルの中身に根本的な原因があります。今回は、このエラーの本当の意味と、誰でもできる簡単な解決策を解説します。

エラーの正体:あなたは「部屋の鍵」で「ビルを建てる」ことはできない

この#1044エラーの本質は、「データベースへのアクセス全般」が拒否されているわけではありません。「データベースを**新規作成(CREATE DATABASE)**する」という、特定の命令の実行が拒否されているのです。

これをアパートの引っ越しに例えてみましょう。

  • あなた(MySQLユーザー): 新しいアパートの一室の住人
  • レンタルサーバー(Xserverなど): アパート全体の大家さん
  • phpMyAdmin: 部屋に出入りするためのツール
  • .sqlファイル: 家具の組み立て方が書かれた**「作業指示書」**

あなたが受け取ったエラーは、例えるなら「部屋の鍵を使って、アパートの敷地に新しい棟を建てようとして、大家さんに止められた」状態です。

住人であるあなたには、部屋の模様替え(テーブルの作成やデータの追加)は許可されていますが、新しい棟を建てる(データベースを新規作成する)権限はありません。それは大家さんの仕事です。

エラーの原因は、あなたの「作業指示書(.sqlファイル)」の中に、「新しい棟を建てろ(CREATE DATABASE)」という、権限を超えた命令が書かれていたことだったのです。


💡【最終解決策】作業指示書(SQLファイル)を修正するのが唯一の正解!

解決策は、この権限を超えた命令を作業指示書から削除し、正しい作業場所を明記してあげることです。

前提:データベースは「大家さん」に作ってもらう

まず大前提として、引っ越し先となる空のデータベースは、Xserverの**「サーバーパネル」にある「MySQL設定」**から作成しておきます。これは、大家さんに新しい部屋を用意してもらう手続きです。

手順1:作業指示書(.sqlファイル)を開く

PCに保存してある.sqlファイルを、テキストエディタ(メモ帳など)で開きます。

手順2:【原因】「新しい棟を建てろ」という命令を書き換える

ファイル上部にある、CREATE DATABASEで始まる行を探し、この一行を丸ごと削除します。

SQL

--  この「データベース作成」命令がエラーの原因。新しいデータベース名に書き換える。
CREATE DATABASE IF NOT EXISTS `古いデータベース名` ... ;
↓
CREATE DATABASE IF NOT EXISTS `新しいデータベース名` ... ;

手順3:【重要】「作業場所の住所」を正しく書き換える

次に、そのすぐ下あたりにあるUSE文を探し、サーバーパネルで作成した**「新しい部屋の番号(新しいデータベース名)」に書き換えます。**

SQL

-- 古い住所(古いデータベース名)を...
USE `古いデータベース名`;

-- ↓ 新しい住所(新しいデータベース名)に書き換える
USE `新しいデータベース名`;

このUSE文は、「これからの作業は、すべてこの部屋で行ってください」という、作業場所を指示する重要な命令です。

手順4:修正した指示書を提出(インポート)

ファイルを上書き保存し、phpMyAdminの「インポート」機能を使って、この編集済みの.sqlファイルをアップロードします。

ちなみにアップロードするボタンは、上と下にありますが、上のボタンを使用しても、「指定したアップロードディレクトリが利用できません。」と出たので、下にあるインポートボタンを使用しました。


まとめ

以上の手順で、エラーは発生せずにインポートが正常に完了します。

WordPressのデータベース移行で発生する#1044エラーは、権限の問題というよりも、**「古い環境の指示書を、新しい環境のルールに合わせて書き換える」**という、一手間が必要なだけでした。