如何在没有用户名或密码的情况下重新获得对 WordPress 管理员的访问权限
已发表: 2018-10-02无法登录您的 WordPress 网站是一场噩梦。 你确定你有正确的密码,你甚至尝试重置密码,但没有任何效果。 您被锁定在您的网站之外。 值得庆幸的是,有一些快速的方法可以通过 FTP 修改一些数据库记录或一些文件来重新获得访问权限。 只要您对底层服务器资源有一定的访问权限,您就会立即回到 WP admin 中。
本指南将在以下情况下为您提供帮助:
- 重置密码选项不起作用
- 重置密码有效,但您没有收到电子邮件(无论出于何种原因)
- 您知道用户名和密码,但它不起作用
- 你搞砸了帐户的特权
- 用户或 usermeta 数据库表已损坏或意外修改/删除
- 插件/主题搞砸了与登录相关的事情
要使本指南中的方法起作用,您只需要以下其中一项:
- FTP 访问服务器,或
- cPanel 访问服务器,或
- 访问 MySQL 数据库
帮助! 我无法登录!
无法登录的原因有无数种。错误的用户名或密码是最简单的解释,但我不建议依赖这个前提。 特别是如果您知道自己弄乱了 WordPress,并且因此无法登录。 解决问题的第一步——禁用主题和所有插件。 为此,我们不需要管理员权限,并且该操作不会“破坏”任何东西。 它是完全可逆的。
这可以通过多种方式完成,使用 FTP、MySQL 或使用 WP Reset 插件附带的紧急恢复脚本。 由于最后一个是最简单的解决方案,我们将首先介绍它。
WP Reset 是一个了不起的工具,旨在使您的重置、调试和测试任务更容易。 它具有大量功能,包括多个重置选项,当然还有紧急恢复脚本。
使用紧急恢复脚本,您将能够停用您的插件(一个接一个或批量)和主题,而无需访问 WordPress 管理仪表板。
不仅如此,您还将创建一个新的管理员帐户、更新 WordPress 和站点 URL、重置用户权限和角色,以及从 WordPress 管理员外部重新扫描或重新安装核心文件。 真是令人印象深刻!
现在,进入其他方法。
如果您有 FTP 访问权限,请重命名 /wp-content/plugins/ 和 /wp-content/themes/ 文件夹。 任何新名称都可以; 只需在名称前添加“x”即可。
如果您有 MySQL 访问权限,请打开选项表(该表将有一个前缀,即 wp_options)并查找将 option_name 列设置为 active_plugins 和 current_theme 的行。 删除这两行或更改它们的 option_name 值,以便您以后可以轻松地恢复。 如果在默认位置可用,WP 将回退到默认主题(v5 之前的版本为二十十七)。
返回wp-login.php
,刷新页面并尝试登录。仍然无法正常工作? 继续阅读。
花点时间找出最简单的方法
如果您根本没有使用 WordPress 或您的帐户,并且您确信问题只是用户名或密码错误,那么请使用 MySQL 路线。 只需更改数据库中的密码即可重新获得访问权限。
如果您根本没有帐户,或者您有理由相信您搞砸了,那么 FTP 方法效果更好,因为我们需要创建一个新帐户。 仅使用 FTP 或仅使用 MySQL 访问都可以获得积极的结果,因此如果您只有一个可用的,请不要惊慌。
如果您可以访问站点的 WP-CLI,则无需弄乱文件或数据库。 wp user
命令将为您提供足够多的工具来修复帐户或创建新帐户。
无需用户名或密码即可登录 - MySQL 方式
要使 WP 帐户正常工作,必须正确对齐一些事情。 WP 在 users 表中查找用户名和散列密码,如果找到一行,它将继续在 usermeta 表中搜索其他行。 它需要他们弄清楚您的帐户权限。 如果上述任何事情失败,您将无法登录,或者您将无法登录,但没有正确的权限。 由于 WordPress 的过滤器和操作,任何数量的插件和主题都可以改变这个过程并使调试变得更加困难。 这就是为什么我已经建议禁用它们。
我还将提到通过插件运行自定义 WP DB 类的可能性。 其中的一个错误也可能是罪魁祸首。 为确保您没有运行任何插件,请重命名 /wp-content/mu-plugins/ 文件夹。 如果您找不到该文件夹 - 太好了! 这意味着您没有任何活动的插件。
phpMyAdmin 是一个不错的工具,可以在 WP 的数据库中更改或添加几行。 大多数人通过预安装的 cPanel 访问它,您不必再次输入凭据。 提醒一下,cPanel 可在 https://yoursite.com:2083 上找到。 如果这对您不可用,但您确实拥有数据库用户名、密码以及从远程主机连接到它的能力,那么我建议安装免费的 HeidiSQL 应用程序并使用这些详细信息进行连接。 如果您的 WP 工作,保存在wp-config.php
中的用户名和密码当然可以工作,但由于安全限制,很少用于从远程主机连接到 MySQL。 如何设置取决于服务器,不可能给出一般性的建议。
无法登录您的#WordPress 网站? 用户名和密码不起作用? 以下是一些无需用户名和密码即可重新获得访问权限的简单方法。
点击推文修改一些数据库行
在用户表中找到您的帐户。 再一次 - 表总是有一个前缀。 默认情况下它是 wp_users,但它可以是任何东西; 即:site765_users。 假设只是密码错误,编辑 user_pass 列并输入一个新的散列密码(仅使用 MD5)。 密码“123456”的哈希值是e10adc3949ba59abbe56e057f20f883e
,但我强烈建议使用更合适的密码并为其生成哈希值。 保存该行并尝试登录。 没运气? 让我们检查一下特权。
记下您的帐户 ID - 在用户表中的 id 列下可见。 然后在 usermeta 表中找到 user_id 列(键)具有该 id 值的所有行。 您可以期望找到 10 多行,但我们需要的是那些在 meta_key 列中具有 wpc_capabilities 和 wpc_user_level 值的行。 将第一个设置为a:1:{s:13:"administrator";b:1;}
并将第二个设置为10
。 保存,尝试登录。还是没有运气? 在这种情况下,我建议创建一个更容易通过 FTP 完成的新管理员帐户。
如果您无法使用 FTP,请模仿您已经拥有的帐户中的数据来创建一个新帐户。 确保它具有唯一的用户名和电子邮件地址,并且您在上面提到的 usermeta 表中创建了两条记录。 这就是直接在数据库中创建帐户所需的全部内容。
无需用户名或密码即可登录 - FTP 方式
此方法的第一步也是关键步骤是找到活动主题的functions.php
文件。 如果您重命名了 /wp-content/themes/ 文件夹,则将其重命名并只保留 Twenty Seventeen 主题。 任何其他主题也可以,但请确保它没有任何可能导致错误的自定义登录功能。
找到functions.php
文件后进行测试以确保您拥有正确的文件。 相信我——我已经浪费了几个小时编辑错误的文件。 添加die('It works!');
作为文件的第一行 PHP; 保存并刷新站点。 如果没有任何变化,则说明文件错误。 撤消更改并找到正确的更改。 一旦你有了它,将此代码添加到文件的开头;
// modify these two lines $user_email = '[email protected]'; $user_password = '123456'; if ( !username_exists( $user_email ) ) { $user_id = wp_create_user( $user_email, $user_password, $user_email ); wp_update_user( array( 'ID' => $user_id, 'nickname' => $user_email ) ); $user = new WP_User( $user_id ); $user->set_role( 'administrator' ); wp_die( 'Success!' ); } else { wp_die( 'Username already exists.' ); }
修改代码的前两行,保存文件并重新加载站点。 “成功!” 应出现在屏幕上,然后您可以使用新的用户名和密码继续登录; 您在代码的前两行中设置的那些。 完成后不要忘记从functions.php
中删除代码。
其他重新获得 WordPress 访问权限的方法
如果您有 FTP、MySQL 或 cPanel 访问权限,上述方法将使您登录。如果没有,请确保您在下方发表评论。 我很想知道是什么阻止您登录。
对某些人造成问题的常见“小事”是没有在正确的 URL 上打开wp-login.php
。 在未将其设置为站点地址时使用“www”,反之亦然。 或者不使用正确的协议——HTTPS 而不是 HTTP,反之亦然。 虽然页面可能会加载,但这并不意味着您在正确的 URL 上,因此请仔细检查。
如果您来这里是为了学习如何入侵某人的 WordPress,对不起,不是那种文章。 通过 FTP 或 MySQL 访问,我假设您是合法所有者,并且不会将所描述的方法用于邪恶目的。