WordPress 数据库维护时常用到 12 个 SQL 语句

标签: WordPress WordPress 性能优化 数据库 | 发表时间:2013-01-11 23:05 | 作者:Denis
出处:http://blog.wpjam.com

虽然通过 WordPress 强大的插件库,你几乎可以干任何的事情,但是有时候需要快速修复一些特定的问题的时候,直接操作数据库可能反而是方便的方法,所以这篇文章就给大家介绍 WordPress 数据库维护时常用到 12 个 SQL 语句。

*注:下面假设 WordPress 数据库的表的前缀都是默认的“wp_”。

1. 直接在数据库中修改密码

密码忘记了是经常的事情,博客密码忘记了进不去,可以直接在数据库里面修改:

  
UPDATE wp_users SET user_pass = MD5('PASSWORD') WHERE user_login = 'admin'

上面采用了 MySQL 的 MD5() 函数讲密码转成 MD5 Hash。

2. 将日志从一个作者转移到另外一个

假如你的博客的某个作者离开了,或者你不想让“admin”作为作者名,想把日志的作者从一个改到另外一个:

  
UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;

*注:你需要知道两个作者的 user id。

3. 删除数据库中日志修订记录和其相关的 post_meta 数据

特别是针对多人博客的时候,日志修订功能很重要,但是日志修订功能也在数据库里面添加了很多的数据,假设你的博客只有 100 篇日志,每篇日志有 10 个日志修订,你的 posts 表中就会有超过 1000 条记录,严重的数据冗余:

  
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'

*注:上面的 SQL 将删除数据库中所有的日志修订记录和其相关的 meta 信息(自定义字段)。

当然你还可以:彻底 屏蔽日志修订功能

4. 批量删除垃圾留言

如果你一段时间没有管理你的博客,刚好出去休假,没有办法上网,并且博客也没有装类似 Akismet 这类防垃圾留言插件,那么你回来的时候,你会发现博客后台有成千上万条垃圾留言需要你去审核。

这个时候,其实你只需要审核通过正常的留言,然后执行下面这条 SQL:

  
DELETE FROM wp_comments WHERE comment_approved = '0';

5. 查找没用的标签

你可能创建一些 WordPress 标签之后,就没有再使用,你可以通过下面这条 SQL 找到它们,然后安全的删除他们。

  
SELECT * From wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count=0;

6. 查找和替换数据

对于熟悉 MySQL 数据库的开发者来说,replace() 这个 MySQL 函数都应该很熟悉,它可以让你指定一个字段,然后替换它里面的字符串,一旦执行,所有这个字段里面的字符串都会被替换。对于 WordPress 博客来说,这个 SQL 则非常实用,它可以让你批量修改某些输入错误,或者某个邮件地址等等。

  
UPDATE table_name SET field_name = replace( field_name, 'string_to_find', 'string_to_replace' ) ;

替换日志内容中字符串:

  
UPDATE wp_posts SET post_content = replace( post_content, 'string_to_find', 'string_to_replace' ) ;

将某个留言者地址替换下:

  
UPDATE wp_comments SET comment_author_url = REPLACE( comment_author_url, 'http://oldurl.com', 'http://newurl.com' );

留言者邮箱:

  
UPDATE wp_comments SET comment_author_email = REPLACE( comment_author_email, '[email protected]', '[email protected]' );

还有一个 WordPress 插件 Search & Replace 还提供一个后台让你更加容易进行批量替换。

7. 获取所有留言者的邮件地址

有时候你想做点不是那么好的事情,比如给所有留言者发下邮件,告诉他们你博客做了一些新的功能,或者写了一个很不错的文章,那么你干坏事情之前,首先要获取所有留言者的邮件地址:

  
SELECT DISTINCT comment_author_email FROM wp_comments;

*注:上面的 DISTINCT 让你获取的邮件地址是唯一的,即使这个用户发过好几次留言,也不怕。

不过群发邮件这件事情个人建议还是不要这样做好。 :-)

8. 一次把所有插件都停了

网站出现问题了,需要一次把插件全部都先停了之后检测下:

  
UPDATE wp_options SET option_value = '' WHERE option_name = 'active_plugins';

9. 删除所有标签

有时候,你疯了,想删除博客所有的标签,这个时候你不能单纯的清空 wp_terms 表,因为 wp_terms 表同时存了分类和标签的数据,这样你就把分类信息也删除了,这样你就真的疯了。

  
DELETE a,b,c
FROM
	database.prefix_terms AS a
	LEFT JOIN database.prefix_term_taxonomy AS c ON a.term_id = c.term_id
	LEFT JOIN database.prefix_term_relationships AS b ON b.term_taxonomy_id = c.term_taxonomy_id
WHERE (
	c.taxonomy = 'post_tag' AND
	c.count = 0
	);

*注:上面 SQL 除了删除标签,还删除了所有标签和标签和日志关联的关系。

10. 列出没用的 post meta

wp_postmeta 中的数据是由一些插件或者自定义字段生成的,他是对 wp_posts 表的一种无限的扩展,但是可能由于某种原因,日志被删除了,但是它的 meta 信息还存在 wp_postmeta 表中,下面这条 SQL 将这些没有关联日志的 meta 数据列出:

  
SELECT * FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL;

11. 关闭旧日志留言功能

厄,对于一些技术博客或者其他博客来说,一些旧日志的内容可能已经过时了,但是一些读者,还是对一些问题“纠缠不清”或者“喋喋不休”,怎么办,把留言关了就好了:

关闭留言:

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

关闭Trackback:

  
UPDATE wp_posts SET ping_status="closed" WHERE post_date < '2009-01-01' AND post_status = 'publish';

12. 删除所有 url 含有特定字符串的留言

一些留言者很烦,一次留几十个,其链接都指定到一些卖伟哥,起重机,SEO 的站点,烦人的很,一个一个删,又累,下面这条 SQL 可以来帮忙:

  
DELETE from wp_comments WHERE comment_author_url LIKE "%viagra%" ;

简单总结

这些 SQL 语句是直接对数据库进行操作的,如果你不是那么懂数据库或者 SQL 语言,建议你不要这么做,如果你还是比较自信 SQL 操作,建议操作之前 备份下数据库

你在维护 WordPress 有什么常用的 SQL ,欢迎留言补充。 :-)

>>> 继续阅读全文 ...


欢迎关注我们关于 WordPress 技巧的微博: WordPress JAM 新浪微博 新浪微博       WordPress JAM 腾讯微博 腾讯微博

© 我爱水煮鱼 / 收藏本文 / 6条评论 / RSS 订阅 / 长期承接 WordPress 项目 / 主机域名优惠码 / 新浪微博

相关日志

相关 [wordpress 数据库 sql] 推荐:

WordPress 数据库维护时常用到 12 个 SQL 语句

- - 我爱水煮鱼
虽然通过 WordPress 强大的插件库,你几乎可以干任何的事情,但是有时候需要快速修复一些特定的问题的时候,直接操作数据库可能反而是方便的方法,所以这篇文章就给大家介绍 WordPress 数据库维护时常用到 12 个 SQL 语句. *注:下面假设 WordPress 数据库的表的前缀都是默认的“wp_”.

优化 WordPress 数据库,提高 WordPress 速度

- - 我爱水煮鱼
WordPress 的机制是主要使用 wp_posts 表来存储所有数据,包括日志,页面,附件,导航菜单等等,所以 WordPress 使用了一定时间之后,数据量一大还是有点慢,除了 对 WordPress 进行全方面的优化之外,我们还可以对数据表进行减肥和优化,来提高 WordPress 的速度.

流行WordPress SEO插件曝高危SQL注入漏洞

- - FreeBuf.COM | 关注黑客与极客
最新消息,全球最流行的CMS应用WordPress插件WordPress SEO by Yoast曝高危SQL注入漏洞,该插件使用频率相当高,用户高达可达千万. WordPress SEO by Yoast插件是WordPress平台下非常流行的SEO插件,看其在Yoast网站上高达1400万次的下载量就知道了.

Google Cloud SQL 云端数据库开测

- xcv58 - 谷奥——探寻谷歌的奥秘
很多Google App Engine用户都想要一个简单而传统的数据驱动应用,于是今天Google宣布开放测试Google Cloud SQL. 这是一个接近传统数据库的云端服务,并可与App Engine整合:. 不需要管理员和维护,Google会帮你搞定一切. 高可靠性和可用性,你的数据会在多个数据中心之间同步,即便一个出问题也不会影响使用.

SQL Server 数据库巡检脚本

- - CSDN博客数据库推荐文章
select '现在没有阻塞和死锁信息' as message. select '引起数据库死锁的是: '+ CAST(@bl AS VARCHAR(10)) + '进程号,其执行的SQL语法如下'. select '进程号SPID:'+ CAST(@spid AS VARCHAR(10))+ '被' + '进程号SPID:'+ CAST(@bl AS VARCHAR(10)) +'阻塞,其当前进程执行的SQL语法如下'.

Vertica数据库sql操作备忘

- - 阿辉的空间
删除主键(Vertica数据库的主键值并不是唯一的):. 类别: Database  查看评论.

用SQL语言管理Oracle数据库

- - CSDN博客推荐文章
1,查看数据库的基本属性:. SELECT dbid 数据库编号,name 数据库名称,db_unique_name 全局名称,created 创建时间,log_mode 归档方式,open_mode 访问方式,platform_name 版本类型 FROM v$database;. 2,查看所有数据库对象的类别和大小:.

WordPress 数据库管理和优化插件

- - 我爱水煮鱼
数据库备份:WP Database Backup. 数据库备份无疑是数据库管理中最重要的一项工作,如果服务器因为某种原因宕掉了,又或者网站被黑,内容被篡改,而又没有备份数据库,这时候就彻底悲剧了,很多很多重要数据就会丢失且无法恢复. 而在 WordPress 数据库备份这方面, WP Database Backup 无可争议是最好的 WordPress 数据库备份插件,它可以支持你把数据库备份到服务器上,下载到本地,或者发动到你的邮箱,并且更重要的是你还可以让它定期把数据库备份好,自动发送到你的邮箱中.