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エラーは、権限の問題というよりも、**「古い環境の指示書を、新しい環境のルールに合わせて書き換える」**という、一手間が必要なだけでした。