運用中のWordPressテーブルのプリフィクスを変更

セキュリティ対策として、WordPressのテーブル名のプリフィクスをデフォルトのものから変更した。

  1. wp-config.php内の次の行を変更。
    $table_prefix = 'new_';
  2. mysqlをroot権限で起動。
    mysql -u root -p
    Enter password:
  3. データベースを選択し、テーブル一覧を表示。プラグインによっては独自にテーブルを作成するものもあるため、実際に使われているテーブルに何があるのか確認する必要がある。
    use wpdb;
    show tables;
  4. 表示されたすべてのテーブルを、ひとつずつ名前変更。
    alter table wp_commentmeta rename to new_commentmeta;
  5. データとして登録されているテーブル名も変更しておく。
    update new_options set option_name='new_user_roles' where option_name='wp_user_roles';
    update new_usermeta set meta_key='new_capabilities' where meta_key='wp_capabilities';
    update new_usermeta set meta_key='new_user_level' where meta_key='wp_user_level';

    この変更をしておかないと、ダッシュボードにアクセスしようとしたときに「このページにアクセスするための十分なアクセス権がありません」とエラーが出てしまう。

  6. mysqlを終了。
    quit;

以上で無事に変更完了。

Acunetix WP Security」や「All in One WP Security & Firewall」などのプラグインを利用して変更する方法もあるが、広く使われていると思われるAcunetix WP Security (旧名WP Security Scan) は現在確認した限りでは対応バージョンが3.7.1とかなり古く、「fix all critical issues」ボタンをクリックしたらサイトがごっそり削除されてしまった、などの不具合がレビューに複数例報告されていたため、こわいので手作業で変更することに。

こうしたデータベースの変更を行う作業では、事前にディレクトリとデータベースのバックアップ必須。

タイトルとURLをコピーしました