Typecho博客忘记密码恢复笔记
Typecho 博客忘记密码恢复笔记
一、通用背景说明
- Typecho 默认没有前台“找回密码”功能
- 重置密码的核心原理:直接操作数据库,将
password字段替换为已知明文的哈希值 - 不同数据库(MySQL / SQLite)操作方式不同
不同 Typecho 版本使用的哈希算法不同:
- 旧版(≤1.2.0):MD5
- 新版(1.2.1+):
$T$或$P$哈希
- 已验证有效方案:SQLite 数据库 + MD5 值替换,适用于旧版或兼容模式
二、通过 Podman 部署的 Typecho(SQLite 数据库)重置密码
1. 找到 SQLite 数据库文件路径
# 进入容器
podman exec -it <容器名> sh
# 查找 .db 文件
find / -name "*.db" 2>/dev/null
# 常见路径示例:
# /app/usr/typecho.db
# /var/www/html/usr/typecho.db2. 使用 sqlite3 修改密码(已验证有效)
# 进入数据库
sqlite3 /app/usr/typecho.db # 替换为你的实际路径查看当前用户
.header on
SELECT * FROM typecho_users;执行密码更新(关键操作)
UPDATE typecho_users
SET password = 'e10adc3949ba59abbe56e057f20f883e'
WHERE name = '你的用户名';✅ 此方法经验证有效,可将密码重置为 123456退出 sqlite3
.quit3. 一行命令直接修改(推荐)
podman exec -it <容器名> sqlite3 /app/usr/typecho.db \
"UPDATE typecho_users SET password = 'e10adc3949ba59abbe56e057f20f883e' WHERE name = 'admin';"三、通用 MySQL 重置方法(非 Podman 环境参考)
1. 通过 phpMyAdmin(虚拟主机)
- 进入
typecho_users表 修改
password字段为:e10adc3949ba59abbe56e057f20f883e- 登录密码变为:
123456
2. 通过 MySQL 命令行
UPDATE typecho_users
SET password = 'e10adc3949ba59abbe56e057f20f883e'
WHERE name = '你的用户名';四、不同版本对应的临时密码速查表
| Typecho 版本 | 数据库 password 值(哈希) | 对应明文密码 |
|---|---|---|
| ≤ 1.2.0(旧版) | e10adc3949ba59abbe56e057f20f883e | 123456 |
| 1.2.1+(新版,验证未测) | $P$B.fEqzKJtuGjaz/i6BhxiV6cDNfOVu/ | 12345678 |
✅ 本次实际操作中:SQLite + e10adc3949ba59abbe56e057f20f883e 有效五、安全后续操作(非常重要)
- 立即登录后台
地址:https://你的域名/admin
账号:你的用户名
密码:123456 - 立即修改密码
路径:控制台 → 个人设置 → 修改密码 - 建议安装找回密码插件(避免下次再操作数据库)
插件名:Passport
项目地址:https://github.com/little-gt/PLUGION-Passport
六、常见问题说明
- 为什么不用
$P$...也能登录?
Typecho 内核在验证密码时会自动兼容旧版 MD5 哈希,因此替换为 MD5 值仍然有效。 - SQLite 数据库本身没有独立密码
Typecho 的 SQLite 数据库文件默认无加密,不要试图给.db文件设置密码(原生不支持)。 - 如果表前缀不是
typecho_
请根据config.inc.php中的配置修改 SQL 语句中的表名。
适用环境:Podman + SQLite + Typecho(旧版或兼容 MD5 版本)