WordPressで管理画面にアクセスできなくなったときの対処法

このページにアクセスするための十分なアクセス権がありません。

既存サイトをコピーして新規サイトを構築することになったが、テーブルプレフィックス(接頭辞)がコピー元とコピー先で同じになってしまうのが嫌だったので、コピー先のテーブルプレフィックスを変更することにした。テーブルプレフィックスの変更は wp_config.php の $table_prefix を変更すれば良い。

// wp_config.php
// $table_prefix = 'wp_'; から変更
$table_prefix  = 'hoge_';

これで、テーブルプレフィックスとして「hoge_」が利用されるようになるので、それに合わせてテーブル名を変更する。

ALTER TABLE `wp_comments` RENAME `hoge_comments`;
ALTER TABLE `wp_links` RENAME `hoge_links`;
ALTER TABLE `wp_options` RENAME `hoge_options
ALTER TABLE `wp_postmeta` RENAME `hoge_postmeta`;
ALTER TABLE `wp_posts` RENAME `hoge_posts`;
ALTER TABLE `wp_term_relationships` RENAME `hoge_term_relationships`;
ALTER TABLE `wp_term_taxonomy` RENAME `hoge_term_taxonomy`;
ALTER TABLE `wp_terms` RENAME `hoge_terms`;
ALTER TABLE `wp_usermeta` RENAME `hoge_usermeta`;
ALTER TABLE `wp_users` RENAME `hoge_users`;

表示確認したところ特に問題無し。次に管理画面にアクセスしようとログイン画面を表示。ここも問題無し。ユーザー名とパスワードを入力しログインをクリック。すると下記の画面がでて管理画面にアクセスできなくなってしまった。

このページにアクセスするための十分なアクセス権がありません。
このページにアクセスするための十分なアクセス権がありません。

調べたところ、optionsテーブルとuser_metaテーブル内にプレフィックス付きのデータがあるのを発見。プレフィックス直でデータに使用してるのってどうなん…というのは置いといて、下記のような感じでデータを更新。

UPDATE hoge_options SET option_name = 'hoge_user_roles' WHERE option_name = 'wp_user_roles';
UPDATE hoge_usermeta SET meta_key = 'hoge_capabilities' WHERE meta_key = 'wp_capabilities';
UPDATE hoge_usermeta SET meta_key = 'hoge_user_level' WHERE meta_key = 'wp_user_level';

これで問題なく管理画面にもログインすることができた。

  • ブックマーク
  • Feedly

この記事を書いた人

キタジマタカシ

長崎在住、フリーランスのWordPress テーマ / プラグインデベロッパー。 多数のプロダクトをオープンソースで開発・公開しています。現在は WordPress 有料テーマ Snow Monkey を開発・販売しています。