WordPress站点MySQL数据库操作之常用SQL语句汇总
2012-04-11

对于WordPress而言,MySQL数据库存储了站点所有信息,因此数据库的重要性对站点来说尤为重要,一般情况下不要轻易折腾数据库。但是很多情况下,使用SQL语句可以高效的批量修改站点内容,大大提供效率。

接下来,偶米工作室将为您介绍几条常用的SQL语句,即使你没有任何数据库基础,也可以轻松操纵数据库。

注:所有的语句都是单纯的SQL查询,并且假定你使用的是标准的表前缀“wp_”。 如果你使用不同的表前缀,请自行修改相应的语句。

1、WordPress站点更换域名

从网站收录和优化方面考虑,除非到万不得已的情况下,不要更换站点域名。不过很多时候,比如说主题开发者,一般情况下都是在本地(localhost)测试好网站内容在上传到服务器和绑定域名,如果手工修改网站中的域名,会花费很多工作量,采用SQL语句方法批量修改可以快速达到更换域名的目的。

更改WordPress地址和首页地址

UPDATE wp_options SET option_value = replace(option_value, 'http://www.旧网址.com', 'http://www.新网址.com') WHERE option_name = 'home' OR option_name = 'siteurl'

更改文章的GUID

UPDATE wp_posts SET guid = REPLACE (guid, 'http://www.旧网址.com', 'http://www.新网址.com')

更改正文中的链接地址

UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://www.旧网址.com', 'http://www.新网址.com')

2、修改文章作者

你安装WordPress后,admin账户就创建了,不少人都错误的使用这个帐号来写博客,直到他们认识到,这并不是个人帐号。使用一下SQL语句可以将作者a的文章全部转移到作者b。

UPDATE wp_posts SET post_author = 'b' WHERE post_author = 'a'

3、重设admin的用户名

为了站点安全,缓和暴力破解密码的攻击,你应该把默认的管理员用户名删除或者从 admin 修改为一个更难被猜到的名字,因为现行的 WordPress 版本都很容易因为用户枚举而被攻击。

UPDATE wp_users SET user_login = '新的用户名' WHERE user_login = 'admin'

4、手动重设密码

很多人为了保护自己的博客不被人黑掉,使用了很复杂的密码,这虽然是一件好事,但也经常会发生遗忘管理员密码的事情。

当然,通过电子邮件可以发送给你WordPress重设密码的链接,但如果你无法访问你的邮件地址,那么就只好使用下面的SQL语句来重设你的密码了。

UPDATE wp_users SET user_pass = MD5('PASSWORD') WHERE wp_users.user_login ='用户名' LIMIT 1;

MD5是MySQL内置的哈希函数,用于将密码转换为散列值。

5、批量删除文章修订

WordPress2.6以后的版本增加了一个Post Revisions功能,就是为文章增加版本修订。虽然这个功能有点用,但文章修订增加了数据库的大小,我们可以选择批量删除。

DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision'

6、删除所有未使用的标签

DELETE a,b,c
FROM wp_terms AS a
LEFT JOIN wp_term_taxonomy AS c ON a.term_id = c.term_id
LEFT JOIN wp_term_relationships AS b ON b.term_taxonomy_id = c.term_taxonomy_id
WHERE c.taxonomy = 'post_tag' AND c.count = 0

7、删除所有的Pingback

DELETE FROM wp_comments
WHERE comment_type = 'pingback'

8、删除所有的垃圾评论

DELETE FROM wp_comments
WHERE comment_approved = 'spam'

9、关闭旧文章的留言

我们可以在WordPress控制面板中设置XX天之后的文章关闭留言功能,但是对于一些旧文章,该功能就起不到任何作用了。我们可以使用SQL语句设定XXXX之前的文章关闭留言功能。

UPDATE wp_posts
SET comment_status = 'closed'
WHERE post_date < '2009-01-01' AND post_status = 'publish'

10、更新留言者的网址

大量且有意义的读者留言是网站的财富,是我们的客户,如果某天一个读者网站的域名地址变更,给你发邮件要求更改网站中所有留言设计的读者站点网站,这时候是不是挺为难啊?因为WordPress未提供修改留言者网站地址的功能。不要着急,以下语句可以轻松解决你的烦恼。

UPDATE wp_comments
SET comment_author_url = REPLACE( comment_author_url, 'http://旧网址.com', 'http://新网址.com' )

相信以上十条SQL语句能够对你使用WordPress和操纵MySQL数据库起到帮助作用,如果有什么额外需要,可以直接与我们去的联系。

相关知识