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

时间:2022-05-05
本文章向大家介绍解决WordPress修改数据库表前缀后无法登陆的问题,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

昨晚,MOREOPEN 博友重装 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_%";

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

其中,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