セキュリティ対策として、WordPressのテーブル名のプリフィクスをデフォルトのものから変更した。
- wp-config.php内の次の行を変更。
$table_prefix = 'new_';
- mysqlをroot権限で起動。
mysql -u root -p Enter password:
- データベースを選択し、テーブル一覧を表示。プラグインによっては独自にテーブルを作成するものもあるため、実際に使われているテーブルに何があるのか確認する必要がある。
use wpdb; show tables;
- 表示されたすべてのテーブルを、ひとつずつ名前変更。
alter table wp_commentmeta rename to new_commentmeta;
- データとして登録されているテーブル名も変更しておく。
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';
この変更をしておかないと、ダッシュボードにアクセスしようとしたときに「このページにアクセスするための十分なアクセス権がありません」とエラーが出てしまう。
- mysqlを終了。
quit;
以上で無事に変更完了。
「Acunetix WP Security」や「All in One WP Security & Firewall」などのプラグインを利用して変更する方法もあるが、広く使われていると思われるAcunetix WP Security (旧名WP Security Scan) は現在確認した限りでは対応バージョンが3.7.1とかなり古く、「fix all critical issues」ボタンをクリックしたらサイトがごっそり削除されてしまった、などの不具合がレビューに複数例報告されていたため、こわいので手作業で変更することに。
こうしたデータベースの変更を行う作業では、事前にディレクトリとデータベースのバックアップ必須。