WordPress数据库:11个有用的SQL命令

WordPress数据库:11个有用的SQL命令
WordPress数据库:11个有用的SQL命令

WordPress内容管理系统(CMS)之所以能够如此流行,就是因为它让一点儿代码也不懂的人,也能够轻松创建外观好看而又功能强大的网站。

WordPress网站使用多种代码:通过HTML和CSS用于控制网站的外观;通过PHP和JavaScript提供网站的功能;通过SQL(与PHP结合)与网站数据库进行通信。今天我们就介绍一下,如何通过SQL命令语句来操作WordPress的数据库。

WordPress数据库基础知识

与HTML静态网站不同,WordPress网站上的所有内容、用户信息和数据结构,全部储存在MySQL数据库中。每当用户访问网站的时候,都会通过一系列的SQL查询,实时动态的生成网页内容。

网站上所有的数据,都被储存在数据库的很多表(tables)中。每个表(table)都是一种类型数据的存储容器,网站上不同类型的数据,就被保存在不同的表(tables)中。

WordPress核心数据表包括:

  • wp_posts – 文章和页面的所有内容、菜单数据和媒体内容。
  • wp_postmeta – 每篇文章的元数据。当向文章中添加自定义字段时,元数据就会添加到该表中,例如,我们可以添加在撰写帖子时正在听什么音乐。
  • wp_comments – 文章和页面的所有评论,包括作者,日期,电子邮件等。
  • wp_commentmeta – 评论的元数据。
  • wp_users – 用户名,密码(被加密)和其他用户数据。
  • wp_usermeta – 用户的元数据。
  • wp_options – WordPress常规设置。
  • wp_links – 链接数据。
  • wp_terms – 文章分类和标签。
  • wp_termmeta – 文章分类和标签的元数据。
  • wp_term_relationships – 文章与文章类别和文章标签的链接。
  • wp_term_taxonomy – 该表用于数据分类。WordPress默认的分类包括文章分类、文章标签和链接分类。该表用于管理数据分类和它们的名称和描述。

上述这些,是WordPress的基础表,在我们安装了一些主题和插件后,可能会增加更多的数据表。每个数据表可能有不同的前缀,WordPress默认的表前缀是“wp_”,但是为了确保安全,我们经常会进行自定义的设置。

数据库中的每个表都会包含一些字段,以“wp_users”这个表为例:

  • ID
  • user_login
  • user_pass
  • user_nicename
  • user_email
  • user_url
  • user_registered
  • user_activation_key
  • user_status
  • display_name

通过使用SQL语句,我们可以查看或编辑数据库的任意表及其字段。我们也可以根据需要,添加或删除数据以及创建或删除表。

如何在WordPress数据库中使用SQL 命令

WordPress使用MySQL作为其数据库管理系统,MySQL没有图形用户界面,需要通过命令行来管理和操作,这样非常的不方便。MySQL也有一些图形用户界面的解决方案,其中最受欢迎的是phpMyAdmin

这里默认已经你已经成功安装了phpMyAdmin,并已经完成登录。如果还没有安装phpMyAdmin,可以参考:

我们登录phpMyAdmin后,是这样的页面:

登录phpMyAdmin
登录phpMyAdmin

WordPress网站的数据库会在左侧下方列出,并且在服务器上安装的每个WordPress站点,都应该有一个独立的数据库。这里可能还包含其他一些数据库,这些数据库都没有与WordPress相关的内容。

找到要处理的站点的数据库并单击它(如果不确定是哪个数据库,则可以在wp-config.php文件的DB_NAME中找到它),然后会列出该数据库中所有的表,如果是新安装的WordPress,则它的表应该如下所示:

WordPress的数据表
WordPress的数据表

在此页面上,你可以创建一个新表,也可以单击现有表以查看数据。页面顶部还提供了各种选项卡,单击它们可以用来执行各种功能:

  • SQL
  • Search
  • Query
  • Export
  • Import
  • Operations
  • Routines
  • Events
  • Trigger
  • Designer

搜索数据库

搜索选项卡可以方便地查找和编辑记录,而无需使用SQL命令。例如,如果你想通过电子邮件搜索某个特定用户,则只需在搜索框中输入电子邮件地址,然后选择wp_users数据库(也可以搜索整个数据库)。

搜索数据库
搜索数据库

搜索完成后,单击“浏览”链接,然后单击结果可以直接对其进行编辑,也可以删除和复制记录。

在我们进行下一步之前,你应该备份WordPress数据库。SQL命令中的简单错字可能会弄乱你的整个网站,而且修复错误并不一定很容易。

如何用PHPMyAdmin备份WordPress数据库

使用phpMyAdmin来备份WordPress数据库非常简单,只需要转到“导出”选项卡,选择“快速”导出方式,选择“ SQL”文件格式,然后单击“执行”按钮。

使用phpMyAdmin备份数据库
使用phpMyAdmin备份数据库

完成之后,该文件将被下载到本地计算机上,我们应该将其储存在安全的地方。如果需要从备份还原数据库,请转到“导入”选项卡,从本地计算机选择备份文件,然后单击“执行”恢复数据库。

在phpMyAdmin中执行SQL命令

单击“ SQL”选项卡,我们就打开了一个很大的文本框。可以在文本框中输入SQL命令以查询和编辑数据库。

在phpMyAdmin中执行SQL命令
在phpMyAdmin中执行SQL命令

有用的WordPressSQL命令

经过上面的介绍,我们已经知道如何进入数据库,以及如何来进行数据库的基本操作。现在我们可以通过一些SQL命令,进行WordPress数据库的管理和操作。

请记住,如果你的表在安装WordPress时,设置了不同的表前缀(非“ wp_”开头),则必须编辑相应表名。

1. 更改WordPress密码

忘记密码了怎么办?如果你可以登录到phpMyAdmin,那么就可以使用以下SQL命令,修改某个用户的登录密码:

UPDATE wp_users SET user_pass = MD5( '[new_password]') WHERE user_login = '[username]';

MD5会对新密码进行加密,因此任何有权访问数据库的人,即使看到了密码也没办法使用。

2. 变更文章作者

If you have multiple authors on a site or take over an existing site from another owner, you might want to transfer existing posts into your username. To do this you can use the following query:

如果在一个站点上有多个作者,或者从其他所有者那里接管了站点,则可能需要将现有帖子转移到自己的用户名下。为此,可以执行以下命令:

UPDATE
  wp_posts
SET
  post_author = (SELECT ID FROM wp_users WHERE user_login = '[new_author_login]')
WHERE
  post_author = (SELECT ID FROM wp_users WHERE user_login = '[old_author_login]');

3. 批量删除垃圾评论

WordPress默认安装了Akismet垃圾评论插件,但是依然不能完全避免垃圾评论。随着时间的增加,可能会产生成千上万条垃圾评论,这时我们可以使用SQL命令一次性删除所有垃圾评论。

DELETE FROM wp_comments WHERE comment_approved = "spam";

如果网站有成千上万的待处理评论,可以使用以下SQL命令将其删除(请注意,最终可能会删除一些真实的评论):

DELETE FROM wp_comments WHERE comment_approved = "0";

如果不想删除所有评论,只想删除评论中链接到某个网站的所有评论,可以执行如下的SQL命令:

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

4. 迁移到新域名时更新链接

WordPress中的链接是绝对链接,而不是相对链接,因此,当我们需要将将网站迁移至新的域名时,必须要将其全部更改为新域名。有一些插件可以完成这些工作,我们也可以使用以下SQL命令来实现:

UPDATE wp_posts SET post_content = REPLACE (post_content, ‘[old_domain]’, ‘[new_domain]’);

这基本上是对网站上所有文章的查找和替换功能,有时候也可以将该SQL命令用于其他目的。

5. WordPress文章转为页面

有时,我们在WordPress中创建了一篇文章,后来又想把它转换为页面,要怎么实现呢?我们可以通过如下的SQL命令轻松实现此功能:

UPDATE wp_posts SET post_type = 'page' WHERE post_type = 'post';

当然,我们也可以将页面转换为文章:

UPDATE wp_posts SET post_type = 'post' WHERE post_type = 'page';

6. 更改WordPress用户名

WordPress的仪表盘虽然没有提供更改用户名的功能,但我们使用SQL可以很容易地做到这一点。如果使用的是WordPress默认的管理员用户名“ Admin”,我们完全有必要将它更改为其他用户名,这样更有利于我们网站的安全。

UPDATE wp_users SET user_login = 'newusername' WHERE user_login = 'oldusername';

7. 删除文章修订版本

每当我们在WordPress后台编辑文章时,系统会自动保存每一个修订版本,但是这些可能会占用数据库的大量空间。可以使用以下SQL命令将其删除:

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';

8. 关闭过时文章的评论

很多发表垃圾评论的人,把一些过时的文章作为为目标。我们可以通过SQL命令,关闭在某个日期之前发布的所有文章评论功能(替换为WordPress网站设定的日期格式)

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

9. 更改WordPress图片URL

如果我们迁移了WordPress网站,则需要更新所有网站图片的URL。或者我们可能还决定将图片等静态资源托管在其他位置,以节省服务器空间。要更改WordPress网站图片的URL,可以使用以下SQL命令:

UPDATE wp_posts SET post_content = replace(post_content, ‘Old URL’, ‘New URL’);

10. 批量关闭插件

如果WordPress网站因插件问题,或无法确定的其他问题,造成网站产生错误,无法进入仪表盘管理后台,我们可以尝试在数据库中关闭所有插件,来尝试进入管理后台,如果能够进入后台了,我们再逐个的重新开启插件。

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

11. 关闭文章的评论功能

我们可以通过SQL命令,关闭文章的评论功能:

UPDATE wp_posts SET comment_status = 'closed' where post_type ='post';

总结

掌握一些WordPress数据库的操作,能够帮助我们更加高效的管理网站,但是如果胡乱操作数据库也是非常危险的。记得在对数据库进行任何操作之前,都要对数据库进行备份,如果你还不知道如何备份数据库,可以参考如下文章:

不用插件和phpMyAdmin,只通过命令行来备份和恢复WordPress数据库及网站文件
本文介绍了如何通过phpMyAdmin来备份和还原WordPress数据库

原创文章,作者:牛奇网,如若转载,请注明出处:https://www.niuqi360.com/wordpress/wordpress-database-11-useful-sql-queries/

发表评论

登录后才能评论