Webサイトのサーバーを移転するときは、データベースのエクスポートとインポートを行いますが、データベースの移行でつまずくケースがあります。
特に、SSHが使えないレンタルサーバーでは、phpMyAdminでインポートするので注意が必要です。
次は、インポートのときによくあるエラーの1つです。
CREATE DATABASE IF NOT EXISTS [古いDB名] ~
utf8_unicode_ci;
MySQLのメッセージ: ドキュメント
#1044 - Access denied for user ~
「#1044 – Access denied for user」が表示される原因
移転前のphpMyAdminで、エクスポートの生成オプション「CREATE DATABASE / USE コマンドを追加する」にチェックを入れてエクスポートすると、SQLの中に「CREATE DATABASE IF NOT EXISTS [DB名]~」という記述が追加されます。
この「CREATE DATABASE IF NOT EXISTS [DB名]」は、データベースがなければ作成する、という内容です。
インポートのときに、[古いDB名]のデータベースがないので作成しようとしますが、共用のレンタルサーバーでは、SQLでデータベースを作る権限がないため作成できません。
インポートできない場合の対処法
新しいサーバーでphpMyAdminを使えているということは、データベースとデータベースのユーザーは作成されていると思います。
「#1044 – Access denied for user」が原因でSQLをインポートできない場合は、すでにデータベースがあるので、SQLの中に書かれている次の部分を削除しましょう。
CREATE DATABASE IF NOT EXISTS `古いDB名` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `古いDB名`;
次からは、エクスポートするときにこのオプションのチェックを外しておくと、このエラーは出ません。
phpMyAdminでは、うまくいかない場合があるので注意が必要です。