5
01
2008
WordPress のセキュリティー対策(その2)
phpMyAdmin によるデータベーステーブルのプレフィクス変更
前の記事では “WP Security Scan” プラグインによるデータベーステーブルのプレフィクス変更について紹介しましたが、この方法ではうまく変更できない場合があります.そこで今回は phpMyAdmin を用いてSQL コマンドベースでデータベーステーブルのプレフィクス変更を行う方法を紹介します.
変更手順
1.変更作業中他のユーザが WordPress にアクセスできないようにする.
プラグインの “Maintenance Mode” を用いるのが便利です.
2.データベースのバックアップを行う
データベーステーブルを直接操作する作業を伴いますので、必ずデータベースのバックアップを
行って下さい.
バックアップの方法は色々ありますが、Wordpress から行うには “DBManager” というプラグ
インを使う方法が便利です.ただ私の場合このプラグインでは出力されるSQLデータをテキスト
エディタで開こうとすると、全角文字の部分が文字化けして上手く読み込めませんでした.
他に、phpMyAdmin の Export を用いてSQLダンプを行う方法もあります.この方法が一番
確実にデータベースをバックアップできるでしょう.データベースのコンテンツが膨大で、
データベース全体をバックアップすると巨大なSQLダンプデータになってしまう場合は、個々の
テーブル毎にバックアップを取るということもできます.
3.phpMyAdmin を用いてテーブルの名前を変更する
phpMyAdmin を起動しWordpress で用いているデータベースを選択します.
標準的な環境では 10個のテーブルが作成されているでしょう.NEXT Gen Gallery プラグイン
のようなデータベースを独自に持つプラグインをインストールしている場合は、それらのテーブル
も対象に加えて下さい.
(1) phpMyAdminで対話的に操作を行っても構いませんが、面倒ですので SQLコマンドを用いて
一気にテーブルの名前を変更します.
SQL 操作画面で、次の SQLコマンドを打ち込んで下さい.(画面の例では “tb5963” という
名前に変更していますが、 xxxxxxx の部分は自分で適宜変更して下さい.なるべく他人に推定
されにくい名前にするのが良いでしょう)
RENAME TABLE `wp_comments` TO `xxxxxxx_comments`; RENAME TABLE `wp_links` TO `xxxxxxx_links`; RENAME TABLE `wp_options` TO `xxxxxxx_options`; RENAME TABLE `wp_postmeta` TO `xxxxxxx_postmeta`; RENAME TABLE `wp_posts` TO `xxxxxxx_posts`; RENAME TABLE `wp_terms` TO `xxxxxxx_terms`; RENAME TABLE `wp_term_relationships` TO `xxxxxxx_term_relationships`; RENAME TABLE `wp_term_taxonomy` TO `xxxxxxx_term_taxonomy`; RENAME TABLE `wp_usermeta` TO `xxxxxxx_usermeta`; RENAME TABLE `wp_users` TO `xxxxxxx_users`;
(2) 上記のSQLコマンドでテーブルの名前は変更されましたが、まだこれだけでは不十分です.
データベースのレコードの中に、データベーステーブル名に依存している部分がありますので、
その部分を新しいデータベーステーブル名に合わせて変更します.
(この作業は、個々のWordpress環境によって内容が異なりますので、各自で自分の環境に
応じた作業が必要です)
・ xxxxxxx_options テーブルを開き、option_name フィールドの値が “wp_user_roles”
のレコードを探します.
そのレコードのoption_name フィールドの値を “xxxxxxx_user_roles” に修正して下さい.
・ xxxxxxx_usermeta テーブルを開き、meta_key フィールドの値が “wp_” で始まるレコード
を探します.1ユーザ ID あたり、2〜3 個有るはずです.
”wp_capabilities”, “wp__user_level”, “wp_autosave_draft_ids”
該当するレコードの meta_key フィールドの値の “wp_” の部分を全て “xxxxxxx_” に
置き換えて下さい.
以上で、 phpMyAdmin によるデータベーステーブルの変更は終了です.
4.Wordpress のコンフィグレーションファイル “wp-config.php” の $table_prefix の部分を新しい
テーブルの名前に合わせて変更します.
define('DB_HOST', 'localhost'); // 99% chance you won't need to change this value
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
// You can have multiple installations in one database if you give each a unique prefix
$table_prefix = 'xxxxxxx_'; // Only numbers, letters, and underscores please!
5.最後に WordPress の管理画面にログインして ユーザが再びWordpressにアクセスできるように
します(”Maintenance Mode” を解除)
以上で作業は終了です.過去の記事を幾つか開いてみてきちんと記事の内容が表示されるか確認して見て下さい.