用好WordPress不可不知的几条SQL语句

在 2009-03-23 发布于 网站相关 下以来已有5,363人读过本文 | 18条评论 发表评论

在前面的文章 善用phpMyAdmin,完美解决WordPress数据库问题 中,月夜 为你简单介绍了一下用好WordPress不可不知的一大利器——phpMyAdmin,主要包括phpMyAdmin的基本操作,在phpMyAdmin中备份和恢复MySQL数据库,以及修改数据库中的表的内容等等。

本文,月夜将接着前文所讲述的内容,为你介绍一下在使用WordPress的过程中,经常在phpMyAdmin后台用到的一些SQL语句。关于如何在phpMyAdmin中输入、执行这些SQL语句,请你参阅前文善用phpMyAdmin,完美解决WordPress数据库问题,此处我们不再赘言。

在讲述下面的内容之前,我们首先来注意几个标点。在下面的SQL语句中,数据库、表或者各键名的引号都是键盘左上角~键上的那个点号;而各键值的引号则是键盘上回车键左侧的单引号。牢记这些东西,否则可能出错。

除此之外,在如下的SQL语句中,我们的数据库名字为wp,你需要将所有这些语句中的数据库名字wp修改为你自己的数据库名字。而且,当然,如果你安装WordPress时修改了MySQL数据库的前缀,则也需要进行相应的修改。

特别提醒:执行以下任一条SQL语句之前,请确认你已经及时对MySQL数据库进行过备份!

1.修改表中指定行的内容:博客数据库本地使用

常常我们会这样做,将在线博客备份下来的数据库移作本地之用,在本地phpMyAdmin中将MySQL数据库导入完成之后,通常需要首先修改域名。比如,月夜的MySQL数据库移作本地使用后,就需要把域名(siteurl)修改为形如http://www.yueye.org的形式。此时,我们使用如下所示的语句:

UPDATE `wp`.`wp_options` SET `option_value` = ‘http://www.yueye.org’ WHERE `wp_options`.`option_id` =1;

这样就可以将wp_options表中的option_id为1的行的option_value值修改为需要的内容。

类似地,我们可以修改网站首页(home)地址:

UPDATE `wp`.`wp_options` SET `option_value` = ‘http://www.yueye.org’ WHERE `wp_options`.`option_id` =39;

通常home一项在wp_options表的第39行。当然,可能还需要修改其他一些内容,但因为只是在本地权且使用一下,所以,非关键性的内容,就可以不进行修改而凑合着去用了。

2.博客搬家后修改域名相关

很多朋友会有更换域名的行为,我们通常称之为博客搬家,但更换域名博客搬家之后,随之而来的就有很多任务。如1中所言修改siteurl、home等自不必说,其他还需要修改相当多的内容,比如如果安装的某些插件,有链接这项参数,就需要进行修改,比如月夜使用的Useronline、DDSitemapGen等。此处所说的这些修改都集中在wp_options表中,但我们不应再通过1中所言的方式来逐行修改,而应采用如下方式:

UPDATE `wp`.`wp_options` SET `option_value` = replace(`option_value`,’http://www.oldsite.org’,’http://www.yueye.org’) WHERE `wp_options`.`option_value` LIKE ‘%www.oldsite.org%’

其中,http://www.oldsite.org表示你的旧域名,而www.yueye.org则是你搬家之后的新域名。执行如上所示的SQL语句之后,即可将wp_options中需要修改的所有域名都进行修正,从而完成域名相关的这步修改。

其实,博客搬家之后不止修改这些内容,在wp_posts表中也有一些内容需要修改,比如键GUID下的内容,原来可能形如http://www.oldsite.org/?p=40,显然,我们需要将其修改为形如http://www.yueye.org/?p=40的形式;再比如键post_content下的文章内容里通常会有一些我们嵌入的链接,形如http://www.oldsite.org/2008/website-construct-process-second.html,显然,我们也要将其修改为形如http://www.yueye.org/2008/website-construct-process-second.html的形式;再如键pinged下的ping值里通常还会有形如http://www.oldsite.org/2008/website-construct-process-first.html的链接,我们也同样需要将其修改为形如http://www.yueye.org/2008/website-construct-process-first.html的形式;等等。手工进行这些修改,或者使用上面1中所述的逐行修改的方式显然都不现实,其实,只需使用如下的SQL语句即可轻易完成这些任务:

UPDATE `wp`.`wp_posts` SET `GUID` = replace(`GUID`,’http://www.oldsite.org’,’http://www.yueye.org’);

UPDATE `wp`.`wp_posts` SET `post_content` = replace(`post_content`,’http://www.oldsite.org’,’http://www.yueye.org’);

UPDATE `wp`.`wp_posts` SET `pinged` = replace(`pinged`,’http://www.oldsite.org’,’http://www.yueye.org’);

在phpMyAdmin中的对应数据库里执行如上的SQL语句,即可完成这项复杂的修改域名任务。

3.修改WordPress博客的管理员用户名

几乎所有人都知道,新安装好的WordPress博客的管理员用户名是admin,这就为一些不发分子提供了机会,他们知道了你的用户名,然后去破解你的管理员密码,通常会容易很多。所以,为了WordPress博客的安全,我们在建立好WordPress之后,需要将默认的管理员帐号名修改一下。在phpMyAdmin中执行如下的SQL语句即可轻松完成这项任务,为我们的WordPress加一道保险:

UPDATE `wp`.`wp_users` SET `user_login` = ‘yueye’ WHERE `wp_users`.`user_login` = ‘admin’;

当然,你需要将上面SQL语句中的yueye修改为你自己想要的用户名。

4.重设WordPress管理员密码

在使用WordPress的过程中,我们经常会有忘记管理员密码的事情发生。遇到此种情况,尽管可以通过发送邮件的方式找回密码,但如果你能登录phpMyAdmin,则可以通过SQL语句来轻松重设密码。执行如下的SQL语句可以将管理员密码重置为yueye,然后即可登录WordPress重新修改为自己的密码:

UPDATE `wp`.`wp_users` SET `user_pass` = ‘e134cc21c68bde7ef3bd092c8d656ad8′ WHERE `wp_users`.`user_login` =’yueye’;

当然,你也可以执行下面的SQL语句直接将密码重置为自己的常用密码:

UPDATE `wp`.`wp_users` SET `user_pass` = MD5(‘yueye’) WHERE `wp_users`.`user_login` =’yueye’;

在如上所示的SQL语句中,MD5是MySQL内置的一个函数,用来求一个字符串经过MD5加密之后的结果。

5.删除MySQL数据库中WordPress自动保存的无用内容

为了最大程度减少用户在使用WordPress过程中因各种意外,如电脑突然断电,网络突然断开等等,所造成的损失,WordPress内置了自动保存文件的程序。当用户在WordPress中写作文章时,程序会定时将数据进行备份。尽管这很大程度上保证了我们的安全,可是当我们将文章发布之后,这些自动保存的数据就不再有任何意义。而WordPress自动保存的数据如此之多,以至于占据了我们很多的MySQL数据库空间。所以,为了精简我们的数据库,为了节省空间,我们需要把这些内容删除。这些WordPress自动保存的内容在MySQL数据库的wp_posts表中,而这些多余无用的数据有这样的一个共性,那就是它们在wp_posts表中的post_status键值为inherit,而且它们的post_type键值为revision。所以,我们可以在phpMyAdmin中执行一下SQL语句来轻松将这些无用内容删除:

DELETE FROM `wp`.`wp_posts` WHERE `wp_posts`.`post_status` = ‘inherit’;

或者

DELETE FROM `wp`.`wp_posts` WHERE `wp_posts`.`post_type` = ‘revision’;

6.删除WordPress中的垃圾评论

或许刚刚建立WordPress博客时你对垃圾评论并不在意,毕竟数量不算太多,标记为垃圾评论不就行了。但随着建博时间的增加,你会发现垃圾评论与日俱增,一点点的可能会增至几千甚至数万条。到了那个时候,你就不得不将WordPress博客的垃圾评论从MySQL数据库中一一删除了。因为成千上万条的垃圾评论可能会占据不少数据库空间,给你备份恢复数据库带来不少麻烦。而更关键的是,这些垃圾评论压根儿就没有任何意义,你迟早都得将其焚尸灭迹。

其实,删除这些垃圾评论也很简单,在phpMyAdmin中无非是一句SQL语句而已。在phpMyAdmin中执行如下的SQL语句,即可将垃圾评论从MySQL数据库中彻底清除:

DELETE FROM `wp`.`wp_comments` WHERE `wp_comments`.`comment_approved` = ‘spam’;

或者

DELETE FROM `wp`.`wp_comments` WHERE `wp_comments`.`comment_approved` = 0;

18条评论

  1. RisingSun
    2009/04/22 13:42:26

    恩,这些是蛮有用的,呵呵,我就碰到过其中的一个问题过:密码忘记了。呵呵,还好解决了

    回复评论

  2. 歪歪屋啊
    2009/03/30 22:25:21

    呵呵,藏起来,暂时没用到
    去看其它文章喽~~

    回复评论

    admin 说:

    呵呵。。谢谢朋友,谢谢支持。。。

    回复评论

  3. 安逸时代
    2009/03/27 16:58:47

    这个确实有用!!!

    回复评论

    admin 说:

    呵呵。。喜欢就多支持月夜哦。。

    回复评论

  4. 红客
    2009/03/25 11:13:56

    MySQL语句不是随便玩的,执行前一定要备份。

    回复评论

    admin 说:

    嗯,多谢红客,我的确是每次执行前都会备份的。。即使修改某一点,我也要先备份。。不然出了问题,可追悔莫及啊。。

    回复评论

  5. shamas
    2009/03/24 16:07:31

    修改域名倒是经常用到啊,不过我一般都是本地改好了再导入,用工具改,而且现在5.2版的sql可以直接改,都列出值了

    回复评论

    admin 说:

    呵呵,其实个人觉得使用SQL语句在phpMyAdmin中进行修改挺方便。当然,本地使用工具可能也很好,不过我没有用过,不便发表评论。。呵呵。。

    回复评论

  6. 八八健康网
    2009/03/23 23:12:01

    月夜你好:你真是一位才子,欣赏了。

    回复评论

    admin 说:

    呵呵,朋友过奖了。。其实月夜就是俗人一个。。。

    回复评论

  7. 羊爸爸
    2009/03/23 19:40:17

    忽然就有点怀念你~~~来看看

    回复评论

    admin 说:

    多谢朋友支持。。呵呵。。有事儿尽管说就好了。。我们还是好朋友啊。。

    回复评论

  8. 万维网事
    2009/03/23 14:56:28

    哈哈,学习加收藏啦!!!
    经典~~~

    回复评论

    admin 说:

    呵呵,朋友喜欢我也很开心啊。。

    回复评论

  9. Showfom
    2009/03/23 11:42:55

    学习了

    回复评论

  10. 中国石油杂志
    2009/03/23 09:52:52

    好文章,绝对的好文章啊
    学习中

    回复评论

    admin 说:

    呵呵,多谢朋友支持。。

    回复评论

发表评论

您的昵称 *

您的邮箱 *

您的网站