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

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的栏位,改为与你修改后的前缀(*表示实际前缀)。


然后打开 *_usermeta 表,将meta-key字段中有旧前缀的值,更为新的前缀就OK。


不知道为啥,发现在他的这个表搜索后,发现有好几千条数据!看来手动是行不通了,只好使用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

时间: 2024-11-10 10:11:08

WordPress数据库修改表前缀导致错误及解决办法的相关文章

WordPress导入数据库出现”Unknown collation: ‘utf8mb4_unicode_ci”错误的解决办法_数据库其它

从WordPress4.2版本开始,如果我们在MYSQL5.1版本数据中导出的数据编码是带有utf8mb4格式的,如果我们搬迁网站复原数据的时候,MYSQL5.5等高版本数据库导入到MYSQL5.1低版本的时候会出现"Unknown collation: 'utf8mb4_unicode_ci"错误问题,以前是没有这个问题的,从WP4.2开始才有的. 要解决这个问题,如果我们使用的VPS/服务器,可以类似老左昨天的"Linux CentOS6环境下MySQL5.1升级至MyS

6G数据库的导入 报各种错误的解决办法_Mysql

工具选择 一.sqlyog 这个工具还是很强大的,但是面对5个G的数据库来说,也只能罢工了,简单说,本机导入可以,从本机导入服务器不行. 二.phpadmin 自带的这个挺人家说还行,但是最后没用过,原因是看不见,因为最多50M,虽然修改配置文件可以上传但是5个G还是算了吧,没那个信心. 三.还有一个是一个PHP脚本.好像是德国人写的.这个东西,也是导入数据的,怎嘛说呢,本人是没试验成功.但是网上叫好一片,我是5G数据没点成功,这是折腾了第二天了. 四.数据库分割导入这个我也用到了,每个分割10

.Net FrameWork 4.0中使用EF向数据库插入数据报datatime2类型错误的解决办法

最近用.Net 4.0创建EF的持久层,老是在插入新数据时,报datatime2类型错误. 找了很多资料,都没有得到解决,后来我询问了我的一个同事,Tom 给我解决了这个问题.   由于EF4默认把C#的DateTime类型转换成Sql server2008的datatime2类型,所以2005的数据库不支持,最终导致程序报错.解决办法:是把edmx文档的ProviderManifestToken设置成2005,即可解决       这个问题我找了好多资料,都没找到相关的答案,最后还是被你解决啦

SQL Server 数据库使用备份还原造成的孤立用户和对象名‘xxx’无效的错误的解决办法

server|备份|错误|对象|解决|数据|数据库 介绍SQL Server 数据库使用备份还原造成的孤立用户和对象名'xxx'无效的错误的解决办法          在使用数据库的过程中,经常会遇到数据库迁移或者数据迁移的问题,或者有突然的数据库损坏,这时需要从数据库的备份中直接恢复.但是,此时会出现问题,这里说明几种常见问题的解决方法.一.孤立用户的问题比如,以前的数据库的很多表是用户test建立的,但是当我们恢复数据库后,test用户此时就成了孤立用户,没有与之对应的登陆用户名,哪怕你建立

MySql 修改密码后的错误快速解决方法_Mysql

设置好密码后,使用数据库时出现如下错误: ERROR 1820 (HY000): You must reset your password using ALTER USER statement befo re executing this statement. You must SET PASSWORD before executing this statement的解决方法 今天在MySql5.6操作时报错:You must SET PASSWORD before executing this

Oracle数据库ORA 54013错误的解决办法_oracle

ORA-54013: 不允许对虚拟列执行 INSERT 操作 这是Oracle 11 的新特性 -- 虚拟列. 在以前的Oracle 版本,当我们需要使用表达式或者一些计算公式时,我们会创建数据库视图,如果我们需要在这个视图上使用索引,我们会创建基于函数的索引.现在Oracle 11允许我们直接在表上使用虚拟列来存储表达式.虚拟列的值是不存储在磁盘的,它们是在查询时根据定义的表达式临时计算的.我们不能往虚拟列中插入数据,我们也不能隐式的添加数据到虚拟列,我们只能使用物理列来插入数据.然后可以查询

ThinkPHP下表单令牌错误与解决方法分析

本文实例讲述了ThinkPHP下表单令牌错误与解决方法.分享给大家供大家参考,具体如下: 在项目的开发过程中,添加.编辑数据时偶尔会遇到系统提示的"表单令牌错误",一开始没怎么在意,直到今天下午QA把此问题提到bug系统了,正好时间也有空余,就追着TP3.13的源码看了下去,几分钟后,便知道原委了. 在项目中开启表单令牌,通常要在配置文件中做如下配置 // 是否开启令牌验证 'TOKEN_ON' => true, // 令牌验证的表单隐藏字段名称 'TOKEN_NAME' =&g

Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法_php实例

一.发现问题 在尝试编辑博客站点的Wordpress主题时,突然发现博客站点无法连接:刷新后提示"建立数据库连接错误"之类的错误.自然想到是mysql可能出错了,所以就登陆了VPS主机,尝试启动mysql服务,但是提示failed. 二.解决方法 1.打开/var/log/mysql/error.log文件,查看出错日志.在阅读日志时发现第一条错误提示是:[ERROR] Can't open the mysql.plugin table. Please run mysql_upgrad

解决SQL SERVER数据库备份时出现“操作系统错误5(拒绝访问)。BACKUP DATABASE 正在异常终止。”错误的解决办法_MsSql

SQL SERVER数据库进行备份时出现"操作系统错误5(拒绝访问).BACKUP DATABASE 正在异常终止."错误.我们应该如何解决这个问题?小编今天为大家推荐一个解决办法. 一般备份文件选择的目录为磁盘根目录或备份所选分区未授予sqlserver用户读写权限时会出现此错误. 解决办法就是给sqlserver用户授予权限:    选择要备份的文件夹 ,右键-->属性-->安全-->看下"组或用户"是否包涵Authenticated User