跳到主要内容

重置管理员密码

本页提供 Docker 部署和本地安装两种场景下重置管理员密码的方法。

Docker 部署

第 1 步:生成新密码哈希

your-new-password 换成你想设置的新密码:

htpasswd -bnBC 10 "" your-new-password | tr -d ':\n'
备注

输出的是 bcrypt 哈希,里面可能包含特殊字符。如果你要把它直接带入下一步 Docker 命令,其中的 $ 需要做三重转义,替换成 \\\

第 2 步:更新 Docker 中的密码

把下面命令中的 HASH 替换为上一步生成的哈希,admin@example.com 替换成管理员邮箱:

docker run --rm -v open-webui:/data alpine/socat EXEC:"bash -c 'apk add sqlite && echo UPDATE auth SET password='\''HASH'\'' WHERE email='\''admin@example.com'\''; | sqlite3 /data/webui.db'", STDIO

如果这个命令失败,可以使用下面的备用方法。

备用 Docker 方法

某些环境中,alpine/socat 镜像没有 bash,导致一行命令失败。可以改成分步操作:

  1. 启动一个挂载了 OPL 数据空间数据卷的 Alpine 容器:
docker run -it --rm -v open-webui:/data alpine
  1. 安装所需工具:
apk add apache2-utils sqlite
  1. 生成 bcrypt 哈希:
htpasswd -bnBC 10 "" your-new-password | tr -d ':'
  1. 更新密码:
sqlite3 /data/webui.db
UPDATE auth SET password='HASH' WHERE email='admin@example.com';

本地安装

第 1 步:生成新密码哈希

htpasswd -bnBC 10 "" your-new-password | tr -d ':\n'

第 2 步:更新密码

open-webui 目录下运行:

sqlite3 backend/data/webui.db "UPDATE auth SET password='HASH' WHERE email='admin@example.com';"

HASH 替换成新哈希,把 admin@example.com 替换成实际邮箱。

重置全部数据

如果你想 彻底重置 OPL 数据空间,包括用户、设置、密码和聊天记录,可以直接删除 webui.db

第 1 步:定位 webui.db

如果你不确定数据库位置,可以用 Python 查找:

import os
import open_webui

print("OPL 数据空间安装路径:", open_webui.__file__)

db_path = os.path.join(os.path.dirname(open_webui.__file__), "data", "webui.db")

if os.path.exists(db_path):
    print("webui.db 位于:", db_path)
else:
    print("未找到 webui.db:", db_path)
    print("也可以尝试: find / -name 'webui.db' 2>/dev/null")

第 2 步:删除 webui.db

rm /path/to/webui.db
注意

删除 webui.db 会清空 全部 持久化数据,包括账号、设置、聊天记录和密码。只有在你明确要做全新初始化时才应该使用。