更换域名将wordpress搬家出现“您没有足够的权限访问这个页面”错误信息的解决方案

本人之前申请了rr.nu免费域名,并用其搭建了wordpress博客平台,由于近日在有些网络环境下已经不能正常访问rr.nu免费域名,因此一直想将博客换成别的域名。由于我的博客当时在搭建时使用了wp-hive插件,即一套博客程序可以支持多个独立的博客网站(此方法的搭建教程请详见【wp-hive插件,让您的一个WordPress变成多个博客(每个域名对应不同的博客) 】这篇文章),此次搬家我不想再使用该插件,让每个博客各自独立开,因此需要重新建立一个新的数据库,并重新建立在不同的子目录进行安装。

 

由于搬家涉及博客文章及评论、关键词、分类(其实这些均可以通过wordpress自带的导入功能实现),更重要的是个插件的设置,主题的选择以及设置(由于我采用HeatMap插件,它的设置选项太多,一项一项的在后台增加确实是一件非常痛苦的事!)不可能通过导出导入功能实现。因此本站长觉得用数据库导出再导入的方法应该是最简单的。可我再这个过程当中却是历经总舵折磨,最终一一化解才得以最终完美解决。下面就让我和大家一起来分享成功的喜悦吧:

由于本人建立的博客比较多,为了确保万无一失,我当时就选择了数据量最少的Mdict.Xya.in(Mdict软件及资源库,搬家之前为mdict.rr.nu)来进行测试。

1、 首先在我的godaddy空间绑定我的域名Mdict.Xya.in并将wordpress3.2.1中文版上传至该目录(当然,godaddy本身会已经提供了wordpress在线安装功能),按常规方法安装成功。

2、 以phpmyadmin方式进入原mdict.rr.nu的数据库,导出该博客下的所有数据库表得到一个sql备份文件,保存到本地。

3、 将原mdict.rr.nu博客wp-content下plugins及themes目录的所有文件复制或下载再上传至mdict.xya.in的响应目录。(这一步是要解决主体和插件和原博客保持一致)

4、 再以phpmyadmin方式进入mdict.xya.in的数据库,导入刚才下载的sql备份文件(刚才忘了交代,我的mdict.rr.nu博客采用的数据库前缀为wpmdict,而mdict.xya.in博客采用的数据库前缀为mdictwp,当时是为了区分防混淆,哪知就是这个设置让我折腾了大半天才搞定所出现的问题!),至此数据库导入成功,此时访问mdict.xya.in博客没有问题,主题、插件均正常。

但是噩梦就从此开始,当我习惯地想以管理员方式登录后台时,却提示我:“您没有足够的权限访问这个页面”。我一下就蒙了!赶紧进入数据库,查看管理员的账号和密码,确实发现两个的密码(在mdictwp_users及wpmdict_users表里可以看到)看起来不大一致,于是就将原来的密码至复制到新的表里,依然出错。

于是逐个表测试,发现只要options表和usermeta表用导入的则可定出错!(我为了保险起见,在导入数据库表之前,将新安装mdict.xya.in博客的所有表均重命名放在数据库里的,测试时仅需将导入的数据库表改名,然后再将原来重命名的数据库表名修订成源表名即可,如此反复测试了n次啊)。于是得知问题可定出在这两个表里。但问题是涉及插件、主体设置的所有数据均在options这个表里,我需要的就是这个表的资料啊!所以无论如何也要找出这个表里问题所在!

首先在表中找到原来的域名mdict.rr.nu全部修改成mdict.xya.in,问题依旧;

然后再查找数据库前缀wpmdict,竟然没有找到;

然后在usermeta表查找数据库前缀wpmdict全部替换为mdictwp,问题还是没有解决。

于是上网无数次的搜索,终于找到了一篇文章说是数据库前缀不匹配的问题(可我全部都修改了,也还是没有解决问题啊?!)。于是报着试试看的心态,在phpmyadmin里执行sql语句的方式执行了如下语句:

update mdictwp_options set option_name = replace(option_name,’wpmdict_user_roles’,’mdictwp_user_roles’)

update mdictwp_usermeta set meta_key = replace(meta_key,’wpmdict_capabilities’,’mdictwp_capabilities’)

update mdictwp_usermeta set meta_key = replace(meta_key,’wpmdict_user_level’,’mdictwp_user_level’)

update mdictwp_usermeta set meta_key = replace(meta_key,’wpmdict_autosave_draft_ids’,’mdictwp_autosave_draft_ids’)

居然在执行第一个sql语句的时候找到并替换了一处!(这个我就搞不明白了,我把所有的条目都查过了,并用搜索的方法都没有找出的东东,竟然用这个语句发现了),当然后3句式不可能找到的,因为我之前已经全部手工修改完了!

此时再登陆,居然已经成功了!至此问题全部得以解决。为了避免再走弯路,应该吸取的教训是既然已经重建了一个数据库,哪怕数据库前缀是相同的也因其不再在同一个数据库里,因此不会产生数据覆盖的问题,所以最好将新博客的数据库表前缀设置成跟原来的一致,以保证不会再出这样的低级错误了啦!