在数据库中为 WordPress 增加管理员帐户

许久不写东西,今天来点技术性的文章。

朋友的博客出了故障,白屏了。朋友和我的另一个网站是共用一个虚拟空间的,因此就想帮她处理一下。一开始谷歌了,说是缓存的问题,但是删除缓存文件夹和缓存插件后,没有任何作用……于是就想进入她的后台研究一下。

这就存在一个问题了……我没有她的后台密码。好在是同一个虚拟空间,进入 cPanel 后我可以直接编辑她的数据库,这样也就可以向她的博客中加入一个新的管理员帐户了。

以上是本文所述的技术的应用背景,更普遍的情况应该是,博主忘记了密码而且找回密码的邮箱失效了,或者不小心把所有用户都删除了之类的情况。

如果不知道数据库的名称、帐号和密码的话,可以打开其 WordPress 文件夹下的 wp-config.php 文件查看,一般是在第18行到第26行,有一段如下的文字:

/** The name of the database for WordPress */
     define('DB_NAME', 'yourdb_wp');
/** MySQL database username */
     define('DB_USER', 'youruser');
/** MySQL database password */
     define('DB_PASSWORD', 'yourpassword');

OK。用phpmyadmin进入数据库后,只需要进行少量的插入操作就可以完成工作。虽说不会改动到原来的数据,但仍然建议备份数据库。这里需要涉及到两个数据表,分别是 wp_users 和 wp_usermeta 表。前者是记录用户的基本信息的表,后者则记录用户的使用偏好、权限和一些设置。

首先新建一个用户,打开 wp_users 表后,就能看到当前博客的所有用户信息,当然密码是加密过的。点击插入按钮,插入以下信息:

  1. 第一个字段是一个自增的 ID 字段,留空就好;
  2. user_login,是用户登录时的用户名;
  3. user_pass,是用户登录时的密码,这里需要在函数中选择 MD5 函数,再在文本框中填写密码,这样保存下来的就是密码的 md5 值;一开始我以为是 PASSWORD 函数,结果登录失败<(=✖╭╮✖=)>;
  4. user_nickname,是用户的昵称;
  5. user_email,需要输入一个邮箱;
  6. user_url,是用户的网站地址,输入自己网站的地址或者留空都行;
  7. user_registered,用户的注册时间,选择今天就可以了,方便快捷;
  8. user_activation_key,这是用户忘记密码时,申请用邮箱重置密码所用到的 key,会在用户申请重置时作为一个 url 参数发送到邮箱里,这里留空就好;
  9. user_status,不太清楚是什么,根据已经存在的用户信息,这里填 0;
  10. display_name,显示的名字,我把 nickname 复制过来了;
  11. 点击执行!

完成后,博客中就存在这么一个用户了。不过这个用户是没有任何权限的,在这个时候试图登录 wordpress,会看到一个「您没有足够的权限访问这个页面。」的页面。这时候需要进入另一张表来修改权限。

首先看一下你刚才添加的用户的 ID 是多少,记住后点击进入 wp_usermeta 表,这里的字段只有四个但是记录数会很多……不过还好我们只需要增加两条记录就可以了。选择插入,并插入以下信息:

  1. 第一个字段是自增的 ID,不用管它;
  2. 第二个字段是 user_id,也就是对应哪个用户,填入刚才你添加的那个用户的 ID 就好;
  3. meta_key 是元信息的关键字,也就是权限、属性的名称,我们需要规定用户的权限,填入 wp_capabilities;
  4. meta_value 是元信息的详细值,是一个长文本,这里填入 a:1:{s:13:”administrator”;b:1;} 表示管理员权限;
  5. 接下来是第二条记录,phpmyadmin 应该是默认添加两条记录的,这里直接开始写第二条记录,与第一条记录相似,ID 留空,user_id 填新添加的用户的 ID,meta_key 填的是 wp_user_level 表示用户等级,meta_value 填入 10 表示最高级;
  6. 执行!

这时就可以利用新添加的用户进入后台了。进入后最好在用户的选项中完善一下信息。

σ(-_-メ=)>最后吐槽一下白屏问题——尼玛是主题文件夹里的东西被全删了……没有主题 WordPress 当然什么也显示不了……只好临时把电脑里貌似唯一存着的主题拖上去了……完美解决!

最后,退出,从数据库里把刚添加的用户删了~