纯代码,简单两步批量修改WordPress企业网站数据库前缀
2012-08-05

随着网络安全形式的复杂多变,个人的WordPress企业网站也随时可能受到攻击,在做好数据备份的前提下,保证网站当前安全也是至关重要的任务,对于为何要修改WordPress企业网站的数据库前缀呢?偶米工作室根据多年来的WordPress使用经验,总结出以下两条:

  1. 与自定义前缀相比,黑客攻击使用默认前缀站点的难度较小,修改前缀可以增加网站背被黑的难度
  2. 国内服务器主机资源昂贵且有限,多数主机只提供一个数据库,使用不同前缀可以在同一个数据库中安装多个WordPress企业站点

基于以上两种情况,不同的WordPress企业网站使用不同的数据库前缀势在必行。

对于新建站来说,安装时输入自定义前缀即可,但是对于已经建好的企业网站,修改数据库前缀就略有难度,目前网上常见的方法是通过SQL命令,在PHPMyAdmin中手动修改,该难度和风险均较大,对于新手来说操作难度极大,不利于推广。为此,本着为民服务的思想,抛弃WordPress插件,偶米工作室在此提供一个批量修改前缀的代码,供大家参考。

※在做任何修改前,请务必先进行备份※

在修改数据表前缀名称之前,记得要先进行数据库的备份,否则网站可能会毁掉。

一、修改MySQL数据库

A)将以下代码保存为rename_suffix.php,并根据自己需要修改第11、12行。
注:如果你不清楚当前数据库前缀,可以查看站点根目录下的wp-config.php文件,确定前缀。

<?php

/**
* 修改wordpress表名前缀的工具.
*filename:rename_suffix.php
* @By 偶米工作室 https://www.oome.net
*/

header("Content-type: text/html; charset=utf-8");
/////////下面两行您需要修改///////////
$oldtablepre='love_'; //旧的表前缀
$newtablepre='Wind_Rain_'; //您要修改成新的表前缀
/////////上面两行您需要修改///////////

##########@以下请勿修改@###########################!DONT CHANGE BELOW!##################################################
require_once( dirname(__FILE__) . '/wp-load.php' );

$tables=array("{$oldtablepre}commentmeta","{$oldtablepre}comments","{$oldtablepre}links","{$oldtablepre}options","{$oldtablepre}postmeta","{$oldtablepre}posts","{$oldtablepre}terms","{$oldtablepre}term_relationships","{$oldtablepre}term_taxonomy","{$oldtablepre}usermeta","{$oldtablepre}users");

echo '<div style="font-size:1.2em;"><span style="color:gray;font-weight:bold;">下面更改表名:</span><hr></hr>';

foreach ($tables as $key => $value){
    $oldtable=$value;
    $newtable=str_replace($oldtablepre,$newtablepre,$value);
    $wpdb->query("ALTER TABLE `$oldtable` RENAME TO `$newtable`");
    echo '成功更改表名'.$oldtable.'为:<span style="color:green;">'.$newtable.'</span><br></br>';
}

echo '<span style="color:gray;font-weight:bold;">下面更改'.$newtablepre.'options表中的键值:</span><hr></hr>';

$wpdb->query("update `{$newtablepre}options` set `option_name`=replace(option_name,'{$oldtablepre}user_roles','{$newtablepre}user_roles')");

echo '成功更改'.$oldtablepre.'user_roles为:<span style="color:green;">'.$newtablepre.'user_roles</span><br></br>';

$meta_key=array("{$oldtablepre}capabilities","{$oldtablepre}user_level","{$oldtablepre}autosave_draft_ids","{$oldtablepre}usersettings","{$oldtablepre}usersettingstime");

echo '<span style="color:gray;font-weight:bold;">下面更改'.$newtablepre.'usermeta表中的键值:</span><hr></hr>';

foreach ($meta_key as $key => $value){
    $oldoption=$value;
    $newoption=str_replace($oldtablepre,$newtablepre,$value);
    $rs=$wpdb->query("update `{$newtablepre}usermeta` set `meta_key` =replace(meta_key,'$oldoption','$newoption')");
    echo '成功更改'.$oldoption.'为:<span style="color:green;">'.$newoption.'</span><br></br>';
}

echo '</div>';

?>

B)将rename_suffix.php文件上传至站点根目录下,确保该文件与wp-config.php文件位于同级目录。

C)在浏览器中访问rename_suffix.php文件,即http://www.你的域名com/rename_suffix.php

二、 修改站点配置文件

D)将站点根目录下的wp-config.php文件中的数据库前缀修改为最新前缀,并保存就可以了。
如果你是通过FTP将wp-config.php文件文件下载到本地后修改,还需要将保存后的文件上传至服务器并覆盖原有文件。

E)访问站点,看看网站前后台是否均运行正常。

----------------------------------------------------- O  V  E  R -----------------------------------------------------

OK,通过以上两步,修改数据库前缀就是这么简单,如果你也有想法,赶快行动吧。

当然,如果你自己无法搞定WordPress企业网站,也可以找偶米工作室提供WordPress使用服务哦。

相关知识