数据库

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

Jager · 4月18日 · 2014年 · 3332次已读

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

于是,玛思阁着手帮他整理数据库:

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

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

网上找到的方法如下(玛思阁稍作整理):


 

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

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

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

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

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

不知道为啥,发现在他的这个表搜索后,发现有好几千条数据!看来手动是行不通了,只好使用 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
33 条回应
  1. 骁-miniseo.net 2014-4-19 · 0:41

    发现现在进你博客首先会出现一个文章列表页、、这方式够新颖的。

    • avatar
      Jager 2014-4-19 · 7:52

      呃。。那应该是被转换成手机主题了。。

      • 骁-miniseo.net 2014-4-19 · 9:59

        汗,明明是PC端访问的、

        • avatar
          Jager 2014-4-19 · 11:05

          是因为你前面访问了使用迷你互推联盟页面的博客,所有再来我的博客就会是手机主题,你是不是访问了小僧博客?

          • 骁-miniseo.net 2014-4-19 · 11:07

            呃、忘记了呵呵,是所有的访问了互推联盟页面,再访问博客时返回的都是手机版?

            • avatar
              Jager 2014-4-19 · 11:50

              前天写了一个迷你版的互推js,实际上就是转换成我的手机主题,访问到这种页面,在来我的博客就是手机版,当然只是对你本人生效。https://zhang.ge/2981.html

              • 骁-miniseo.net 2014-4-19 · 11:54

                这样啊,我以为是访问所有互推成员博客都会这样呢,现在明白了。看看去、、

  2. 临沭人 2014-4-19 · 8:14

    这种情况应该极少出现吧 。

    • avatar
      Jager 2014-4-19 · 9:03

      极少~除非折腾网站出了一些莫名其妙的问题,然后重装不注意就会有这个问题。。
      不过,我这个文章是为了记录MYsql语句写的,哈哈。。

  3. 微历史 2014-4-19 · 8:59

    我的wp还是别人帮装的

    • avatar
      Jager 2014-4-19 · 9:03

      有时间自己安装一个玩玩,很简单的,中文向导,跟着做就OK。。

      • 微历史 2014-4-21 · 6:11

        主要还是数据库不知道如何配置

        • avatar
          Jager 2014-4-21 · 8:41

          数据库不用管的,在后台新建一个数据库就可以了。。安装的时候填入用户名等信息就好了

          • 微历史 2014-5-2 · 0:28

            准备找个云存储将数据库放上去,有啥建议没?

            • avatar
              Jager 2014-5-2 · 8:02

              这会儿在外面玩,等晚上回家了细说。

  4. 谢泽文 2014-4-19 · 15:57

    又见一个响应式的板子

  5. 我爱集分宝 2014-4-19 · 17:09

    这几天你的博客打开好慢,是不是互推联盟的调用太多有影响,建议单独放到百度云

    • avatar
      Jager 2014-4-19 · 21:20

      是用了安全宝变慢了,已果断取消了。

  6. 三日月 2014-4-19 · 21:45

    我发现是不是我来晚了,多谢玛思阁搞定了,否则我就坑爹了

    • avatar
      Jager 2014-4-19 · 21:47

      [嘻嘻]

  7. 凌云SEO 2014-4-19 · 23:03

    很好很强大 以后要来多学习了

    • avatar
      Jager 2014-4-19 · 23:04

      互相学习~~

  8. 阿塔历斯 2014-4-21 · 13:51

    是啊,尤其是wp的数据库备份,各种腻歪,不好整

  9. 梦轩丽人 2014-4-25 · 12:57

    呵呵,我就直接用我上次说的那个安全插件,里面就有一键修改数据库前缀的,这个插件已经帮我拦截加黑了两个破解我用户米、密码的IP。

    • avatar
      Jager 2014-4-25 · 13:49

      不知道有没有批量修改域名的东西。。我过几天就要换域名了,数据库里面很多链接都得替换,用语句也要弄半天。。。

      • 梦轩丽人 2014-4-25 · 13:53

        这个还真不懂,不知道是否跟301、302之类的有关,插件大部分是英文,还真有可能漏了很多优秀的插件。

        • avatar
          Jager 2014-4-25 · 14:00

          不涉及301,就是将一些老域名替换成新域名即可。纠结了,有人说用zhang.ge好,有的人说zgboke.com好。。。不过后续应该是启用双域名,不过哪个为主还不知道。。。

          • 梦轩丽人 2014-4-25 · 14:03

            这个只能靠自己选择了,实在不行就同时搞两个不同类型的博客出来!

            • avatar
              Jager 2014-4-25 · 14:06

              [囧] 很累的说。。。要不把zbboke 做成博客联盟? 中国博客联盟。。。。或者给人提供三级域名博客。。。让人注册。

              • 梦轩丽人 2014-4-25 · 14:08

                做成中国博客联盟倒是不错的想法,支持!

  10. 必分享 2014-12-30 · 23:41

    修改就是麻烦,还是按默认的好了。

  11. 很文博客 2018-5-13 · 12:42

    刚出现这个,标志一下晚上回来搞搞!