一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

WordPress数据库修改表前缀导致错误及解决办法

时间:2015-06-16 编辑:简简单单 来源:一聚教程网

WordPress 默认的数据表前缀是『wp_』:(注:这是默认的数据表,如果安装了其他插件有可能生成其他 wp_ 开头的数据表)

    wp_commentmeta
    wp_comments
    wp_links
    wp_options
    wp_postmeta
    wp_posts
    wp_terms
    wp_term_relationships
    wp_term_taxonomy
    wp_usermeta
    wp_users

第一步:那么第一件事就是把所以表前缀改为其他名,如改为 ooxx_(推荐用 phpmyadmin 或者 Adminer 修改)

    ooxx_commentmeta
    ooxx_comments
    ooxx_links
    ooxx_options
    ooxx_postmeta
    ooxx_posts
    ooxx_terms
    ooxx_term_relationships
    ooxx_term_taxonomy
    ooxx_usermeta
    ooxx_users

第二步:修改 wp-config.php

找到 $table_prefix = 'wp_'; 改为 $table_prefix = 'ooxx_';

这样就行了?本来以为是,因为访问博客一切正常,不过当你登录后台时,即使你是 Administrator 身份等待你的是下面这一行字:

You do not have sufficient permissions to access this page.

?澹?蠢椿褂械谌?健??br/>
第三步:修改表里面 wp_ 开头的字段

1. ooxx_options:里面有个 wp_user_roles 改为 ooxx_user_roles

2. ooxx_usermeta:把里面的 wp_capabilities, wp_user_level, wp_user-settings, wp_user-settings-time, and wp_dashboard_quick_press_last_post_id 字段名的 wp_ 全部改为 ooxx_

3. 另外确保 ooxx_usermeta 表里面的 ooxx_capabilities 和 ooxx_user_level 的值如下
ooxx_capabilities should be a:1:{s:13:"administrator";s:1:"1";}
ooxx_user_level should be 10

总结:

折腾后得出简单的方法,适合数据库不大的情况下:导出原来的数据库(不压缩 SQL 格式),用文本编辑器打开此导出文件,搜索替换『wp_』为『新前缀_』,导入新服务器数据库。不过我的习惯还是单身的站点设置特殊的表前缀比较好。

wordpress  安全正确更改数据库表前缀

之前用了默认的数据库前缀做网站,等网站做好了,出于安全角度考虑的时候,就不想要使用默认的数据库前缀,所以就想要更改数据库表的前缀。

替换 WordPress 默认数据库前缀的办法有很多。但在这里我认为比较好的,可以让你完美地替换掉 WordPress 的数据库前缀。

更改 WordPress 数据库表名前缀步骤:(wordpress版本3.0.1)

以下更改数据库前缀教程只需要在phpmyadmin运行十几个sql命令即可。

首先做的就是更改十个表的前缀,这个简单,命令如下:

ALTER TABLE wp_commentmeta RENAME TO xzy_commentmeta;

ALTER TABLE wp_comments RENAME TO  xzy_comments;

ALTER TABLE wp_options RENAME TO xzy_options;

ALTER TABLE wp_posts RENAME TO xzy_posts;

ALTER TABLE wp_postmeta RENAME TO xzy_postmeta;

ALTER TABLE wp_users RENAME TO xzy_users;

ALTER TABLE wp_usermeta RENAME TO xzy_usermeta;

ALTER TABLE wp_links RENAME TO xzy_links;

ALTER TABLE wp_terms RENAME TO xzy_terms;

ALTER TABLE wp_term_taxonomy RENAME TO xzy_term_taxonomy;

ALTER TABLE wp_term_relationships RENAME TO xzy_term_relationships;

上面的命令就是将默认的前缀wp更改为xzy_,如果你想更改成其他的前缀了,只需要把xzy_替换为你喜欢的就可以了。

然后需要在wp-config.php中找到

$table_prefix = 'wp_';

将它替换为

$table_prefix = 'xzy_';

本以为这样就完成了,但是后台发现登陆不上去了,于是再次查看数据库,发现options表中有项wp_user_roles,还有 usermeta有以下五项也需要修改:

wp_capabilities

wp_user_level

wp_user-settings

wp_user-settings-time

wp_dashboard_quick_press_last_post_id

这四项中autosave_draft_ids是日志自动保存,user_roles和user_level是权限方面的,那个 capabilities搞不懂是什么,但直觉告诉我也需要修改,所以继续在sql下运行以下命令:

update xzy_options set option_name = replace(option_name,'wp_user_roles','xzy_user_roles');

update xzy_usermeta set meta_key = replace(meta_key,'wp_capabilities','xzy_capabilities');

update xzy_usermeta set meta_key = replace(meta_key,'wp_user_level','xzy_user_level');

update xzy_usermeta set meta_key = replace(meta_key,'wp_capabilities','xzy_user-settings');

update xzy_usermeta set meta_key = replace(meta_key,'wp_user_level','xzy_user-settings-time');

update xzy_usermeta set meta_key = replace(meta_key,'wp_user_level','xzy_dashboard_quick_press_last_post_id');

这样,我们的目的也达到了,我可以保证,使用此方法可以100%保证对数据库没什么伤害,尽量不要使用编辑器等工具直接替换wp_,因为有些数据库中插件名,绝对地址,文章中都可能存在wp_这个关键词。

现在我的网站已经成功将wp_改为了xzy_,一切都正常,插件也可以不需要关闭!



解决WordPress修改数据库表前缀后无法登陆的问题

重装Wordpress后发现没有任何内容,解决时,发现他的数据库居然有3种前缀,看来是多次安装的时没填的前缀不一致造成的。

于是,整理数据库:

点击查看大小,找到有数据的的表前缀,发现前缀居然是数据库名,很长很长。。。太难看了!这对于我这种强迫症患者是无法容忍的。。。我先将其他2个前缀的所有空表全部删除,只留下那个前缀很长的表,然后全选使用下方的修改表前缀功能,全部给改了。

重新安装WP后,发现原来的那个用户名登陆不了了,提示权限不足,度了一把,找到了解决办法,这就来记录下!

网上找到的方法如下:


默认的表前缀为wp_,如果你修改了wp_config.php中的表前缀,也就是$table_prefix=后面的内容,则您需要同步修改数据库中的表前缀,修改完成后,如果登录wordpress后台成功后,会返回“您没有足够的权限访问这个页面。”的提示,那也就是说您还没有完成修改,Wordpress的代码设计严密,没有那么简单让你完成。

解决办法:打开 *_options表,找到optionname字段值为*_user_roles的栏位,改为与你修改后的前缀(*表示实际前缀)。


http://res.zhangge.net/wp-content/uploads/2014/04/biaoqianzhui1.png
然后打开 *_usermeta 表,将meta-key字段中有旧前缀的值,更为新的前缀就OK。


http://res.zhangge.net/wp-content/uploads/2014/04/biaoqianzhui2.png
不知道为啥,发现在他的这个表搜索后,发现有好几千条数据!看来手动是行不通了,只好使用SQL语句进行局部替换了,SQL语句如下,在phpMyAdmin中选定数据库后,点击工具条中的SQL执行如下语句:
update `new_usermeta` set `meta_key`= replace(`meta_key`,'old_','new_')  WHERE `meta_key` like "%old_%";
1
    
update `new_usermeta` set `meta_key`= replace(`meta_key`,'old_','new_')  WHERE `meta_key` like "%old_%";

以上仅为示例,实际得根据新旧表前缀进行修改:

其中,new_表示修改后的新的前缀,old是修改前的前缀,按照实际修改后,执行即可!

 

实际以上SQL代码也就是MySql的部分替换语句,不会的一起来学习下:

比如,将the_table 表 the_subject字段中的Welcom to替换成 欢迎光临:

update `the_table` set `the_subject` = replace(`the_subject`, 'Welcome to', '欢迎光临') where instr(`the_subject`,'Welcome to') > 0

热门栏目