这是一个非常经典且常用的方法,当你忘记后台密码,又无法通过邮箱重置时,这个方法就派上用场了。

(图片来源网络,侵删)
核心原理
DedeCMS 的用户密码是经过 md5 加密后存储在数据库 #@__admin 表中的,我们可以通过一个临时的 PHP 脚本,在服务器上直接执行一段 SQL 语句,来修改这个密码值。
这个方法的关键在于,你需要在你的网站服务器上拥有文件管理权限,比如通过 cPanel、宝塔面板、FTP 或 SSH 连接到服务器。
准备工作
- 确定你的 DedeCMS 版本:不同版本的密码加密方式可能略有不同,但绝大多数都使用
md5,这个方法适用于 DedeCMS 5.7 及之前的绝大多数版本。 - 获取服务器访问权限:你需要知道如何通过 FTP、SSH 或网站控制面板(如宝塔面板)登录到你的网站服务器,并修改文件。
- 准备新的密码:想好你要设置的新密码是什么。
- 了解你的数据库信息:通常在
/data/common.inc.php文件中可以找到你的数据库用户名、数据库名和密码。
详细操作步骤
第一步:创建一个密码重置脚本
- 在你的电脑上,新建一个文本文档。
- 将下面的代码复制并粘贴到这个文本文档中。
<?php
// +----------------------------------------------------------------------
// | DedeCMS Password Reset Tool
// +----------------------------------------------------------------------
// 请在这里填入你的新密码
$new_password = 'new_password_123';
// 数据库连接信息 (通常在 /data/common.inc.php 文件中可以找到)
$db_host = 'localhost'; // 数据库主机,通常是 localhost
$db_user = 'your_db_user'; // 你的数据库用户名
$db_pass = 'your_db_password'; // 你的数据库密码
$db_name = 'your_db_name'; // 你的数据库名
$db_prefix = 'dede_'; // 你的数据库表前缀,默认是 dede_
// 连接数据库
$conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
if (!$conn) {
die("数据库连接失败: " . mysqli_connect_error());
}
// 设置字符集
mysqli_set_charset($conn, "utf8");
// 对新密码进行 MD5 加密
$encrypted_password = md5($new_password);
// 准备 SQL 更新语句
// 注意:如果你的管理员用户名不是 'admin',请修改下面的 'admin'
$sql = "UPDATE `{$db_prefix}admin` SET `pwd` = '{$encrypted_password}' WHERE `userid` = 'admin'";
// 执行 SQL 语句
if (mysqli_query($conn, $sql)) {
echo "密码重置成功!<br>";
echo "你的新管理员用户名是: admin<br>";
echo "你的新管理员密码是: " . htmlspecialchars($new_password) . "<br>";
echo "请立即登录后台并修改一个更复杂的密码!";
} else {
echo "密码重置失败: " . mysqli_error($conn);
}
// 关闭数据库连接
mysqli_close($conn);
?>
-
修改脚本中的关键信息:
$new_password = 'new_password_123';:将'new_password_123'修改为你自己想设置的新密码。$db_user = 'your_db_user';:修改为你的数据库用户名。$db_pass = 'your_db_password';:修改为你的数据库密码。$db_name = 'your_db_name';:修改为你的数据库名。$db_prefix = 'dede_';:检查你的数据库表前缀,如果不是dede_,请在这里修改,你可以在/data/common.inc.php文件中找到Prenam这个变量的值。WHERE userid = 'admin':如果你的管理员账号不是admin,请在这里修改成你的管理员用户名。
-
保存文件:将这个文件另存为
reset_password.php(文件名可以任意,但后缀必须是.php)。
(图片来源网络,侵删)
第二步:上传脚本到服务器
- 通过 FTP、SSH 或网站控制面板的文件管理器,登录到你的网站服务器。
- 将刚刚创建的
reset_password.php文件上传到你的 DedeCMS 网站的根目录下,也就是和index.php、install文件夹在同一个级别的目录。
第三步:执行脚本重置密码
- 在浏览器中访问你刚刚上传的文件,输入你的网址,后面加上
/reset_password.php。http://www.yourdomain.com/reset_password.php
- 如果一切顺利,你会看到页面显示“密码重置成功!”以及你的新用户名和密码。
第四步:清理和验证
- 立即删除脚本:密码重置成功后,第一时间通过 FTP 或文件管理器将
reset_password.php文件从服务器上删除,这是一个安全隐患,绝对不能留在服务器上。 - 登录后台:你可以访问你的 DedeCMS 后台登录页面(通常是
/dede/login.php),使用用户名admin和你刚刚设置的新密码进行登录。 - 修改密码:成功登录后,请立即进入“系统” -> “系统用户管理”,找到
admin这个账户,点击“修改”,设置一个更复杂、更安全的密码。
重要注意事项和常见问题
- 文件权限:确保你上传的
reset_password.php文件具有可执行权限,如果遇到问题,可以尝试在服务器上将其权限设置为755或644。 - 数据库前缀:这是最容易出错的地方,如果前缀不对,SQL 语句会找不到表,导致重置失败,请务必检查
/data/common.inc.php文件。 - 管理员用户名:如果你自定义过管理员用户名,并且不是
admin,请务必在 SQL 语句中修改WHERE userid = 'admin'这一部分。 - 如果修改后仍然无法登录:
- 检查
reset_password.php文件中的数据库信息是否全部正确。 - 检查 SQL 语句是否执行成功(访问脚本时会显示)。
- 检查
#@__admin表中是否存在pwd和userid这两个字段。 - 某些特殊版本的 DedeCMS 可能使用二次加密(如
md5(md5($password))),你可以尝试将$encrypted_password = md5($new_password);修改为$encrypted_password = md5(md5($new_password));再试一次。
- 检查
- 安全第一:再次强调,用完就删!这个文件一旦被别人利用,就可以随意修改你的管理员密码,后果不堪设想。
这个方法非常可靠,只要你的服务器文件权限正常,基本都能成功解决问题。

(图片来源网络,侵删)
