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.db

2. 使用 sqlite3 修改密码(已验证有效)

# 进入数据库
sqlite3 /app/usr/typecho.db   # 替换为你的实际路径

查看当前用户

.header on
SELECT * FROM typecho_users;

执行密码更新(关键操作)

UPDATE typecho_users 
SET password = 'e10adc3949ba59abbe56e057f20f883e' 
WHERE name = '你的用户名';
✅ 此方法经验证有效,可将密码重置为 123456

退出 sqlite3

.quit

3. 一行命令直接修改(推荐)

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(旧版)e10adc3949ba59abbe56e057f20f883e123456
1.2.1+(新版,验证未测)$P$B.fEqzKJtuGjaz/i6BhxiV6cDNfOVu/12345678
✅ 本次实际操作中:SQLite + e10adc3949ba59abbe56e057f20f883e 有效

五、安全后续操作(非常重要)

  1. 立即登录后台
    地址:https://你的域名/admin
    账号:你的用户名
    密码:123456
  2. 立即修改密码
    路径:控制台 → 个人设置 → 修改密码
  3. 建议安装找回密码插件(避免下次再操作数据库)
    插件名: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 版本)

标签: none

添加新评论