「このページにアクセスするための十分なアクセス権がありません。」の処方箋(の一例)

ただいま、WordPress MEで稼働していたサイトをアップグレードする案件に取り組んでいます。このたびその移行でドツボにハマりましたので、いつも通りの「ご利用は計画的に」の技術情報ですが、どなたかの参考になればと思いつつ、個人的な備忘録としてもここにメモっておく次第であります。

結論からいうと、私の場合「このページにアクセスするための十分なアクセス権がありません。」のエラーメッセージが出てアップグレード後の管理パネルに入れなかったのはインポート時の「MySQLの接続照合順序」の設定が原因でした。

移行元と移行先の環境、および作業の手順は以下のとおりです。

移行元

  • サーバ……さくらのレンタルサーバ スタンダード
  • MySQLのバージョン……4.0.27
  • データベースの文字コード……EUC-JP(ujis)
  • WordPress設定ファイル(wp-config.php)のテーブル接頭辞……hoge_
  • 稼働中のURL……http://www.example.com/fuga

移行先

  • サーバ……ローカルのテスト環境(Ubuntu 8.04 Server Edition)
  • MySQLのバージョン……5.0.67(XAMPP for Linux内で稼働)
  • データベースの文字コード……UTF-8 Unicode(utf8)
  • WordPress設定ファイル(wp-config.php)のテーブル接頭辞……wp_hoge_
  • 稼働させようとするURL……http://192.168.x.x/fuga

作業の手順

  1. 移行元のphpMyAdminにて hoge_ で始まるテーブル一式をSQL形式でエクスポート
  2. 1.で書き出したファイルをテキストエディタで開き(このとき文字コードはUTF-8と自動認識された)「hoge_」を「wp_hoge_」に一括置換し保存
  3. 移行先のphpMyAdminにて新規データベースを作成。MySQLの接続照合順序はデフォルトの utf8_general_ci にて
  4. 移行先にWordPressの最新版(本記事執筆時は3.1)全ファイルをアップロード。インストールスクリプト(http://192.168.x.x/fuga)は起動させない
  5. 移行先のphpMyAdminにて2.で作ったテキストファイルをインポート
  6. インポートした wp_hoge_options を開き siteurl と home を http://192.168.x.x/fuga に修正
  7. インポートしたテーブルはWordPress MEの構造のままなので、http://192.168.x.x/fuga/wp-admin にアクセスしてデータベースをアップグレード
  8. 移行元で使っていたユーザー名・パスワードで管理パネルにログインすればオッケイ……のはずが「このページにアクセスするための十分なアクセス権がありません。」のエラーメッセージ発生!

このメッセージが現われる原因として

[wordpress error] アクセスする権限がないと表示されて管理画面にログインできない場合の対処法 | Odysseygate.com

にて示されているような「wp_options の wp_user_roles 問題」がググるとよく出てくるのですが、ウチの場合は微妙に違っていました。上記サイトの「エラーの原因」「解決方法」にある対処法ではNGで、上で示した「作業の手順」の3.で

接続照合順序を utf8_unicode_ci にしてデータベースを作成

したことで問題を解決できたのでした。エクスポートされたファイルがUTF-8と判定されたのでデフォルトの接続照合順序で作成したのですが……原因がナゾです :-( 移行元のMySQLがEUC-JP(ujis)の文字コードで稼働してるのに wp-config.php で

define( 'DB_CHARSET', 'utf8' );

と書いてたのがまずかったですかね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください