在前面的文章 善用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)修改为形如https://www.yueye.org的形式。此时,我们使用如下所示的语句:
UPDATE `wp`.`wp_options` SET `option_value` = ‘https://www.yueye.org' WHERE `wp_options`.`option_id` =1;
这样就可以将wp_options表中的option_id为1的行的option_value值修改为需要的内容。 类似地,我们可以修改网站首页(home)地址:
UPDATE `wp`.`wp_options` SET `option_value` = ‘https://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','https://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,显然,我们需要将其修改为形如https://www.yueye.org/?p=40的形式;再比如键post_content下的文章内容里通常会有一些我们嵌入的链接,形如http://www.oldsite.org/2008/website-construct-process-second.html,显然,我们也要将其修改为形如https://www.yueye.org/2008/website-construct-process-second.html的形式;再如键pinged下的ping值里通常还会有形如http://www.oldsite.org/2008/website-construct-process-first.html的链接,我们也同样需要将其修改为形如https://www.yueye.org/2008/website-construct-process-first.html的形式;等等。手工进行这些修改,或者使用上面1中所述的逐行修改的方式显然都不现实,其实,只需使用如下的SQL语句即可轻易完成这些任务:
UPDATE `wp`.`wp_posts` SET `GUID` = replace(`GUID`,’http://www.oldsite.org','https://www.yueye.org'); UPDATE `wp`.`wp_posts` SET `post_content` = replace(`post_content`,’http://www.oldsite.org','https://www.yueye.org'); UPDATE `wp`.`wp_posts` SET `pinged` = replace(`pinged`,’http://www.oldsite.org','https://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;