自部署的dify如果忘记密码如何操作
前言
最近由于毕设需要Dify,初始化的时候输入的密码忘记保存了,过了一周左右需要我重新登录尝试了半天还是选择了重置密码。去网上搜寻了老半天的方法大多是”改 .env 文件”或”重置数据库”,但实际操作中发现这些对于最新版本的dify(1.13.0)并不通用。这里把解决方法记录下来,希望能帮到遇到同样问题的人。
本文部分内容参考了 CSDN 博客 的方法,并结合实际环境做了补充和修正。
环境说明
- Dify 版本:1.13.0(通过源码 + docker-compose 部署)
- 部署路径:
~/dify/docker/ - 操作系统:Ubuntu/Debian
方法一:Flask 命令重置密码(只在1.13.0版本的dify尝试过并且生效)
这是最安全的方法,不会影响任何现有数据。
前提条件
需要当前用户有 Docker 权限。如果执行 docker 命令报错那就
1 | sudo |
第一步:确认管理员邮箱
这一步很关键。如果不知道管理员邮箱,重置密码会提示 Account not found。
进入 PostgreSQL 数据库查询:
1 | sudo docker exec -it docker-db_postgres-1 psql -U postgres -d dify |
进入后执行:
1 | SELECT id, email, status FROM accounts; |
会输出类似:
1 | id | email | status |
记下这里的邮箱地址,这就是管理员账号(本人猪鼻尝试了半天结果发现是邮箱输错了)。
注意:Dify 1.13.0 版本的
accounts表没有role或is_admin字段。第一个注册的用户就是系统 Owner(超级管理员)。
查完后输入 \q 退出数据库。
第二步:执行重置密码
1 | sudo docker exec -it docker-api-1 flask reset-password |
按提示输入管理员邮箱和新密码:
1 | Email: eamil@eamil.com |
看到类似 Password reset successfully 的提示就说明成功了。
如果 flask 命令不存在
有些版本的容器里可能没有 flask 命令,可以进入容器内执行:
1 | sudo docker exec -it docker-api-1 bash |
方法二:修改 .env 文件(旧版本适用,csdn提供方法但是我尝试了发现不适用)
如果你的 Dify 是较旧的版本,且 .env 文件中有以下配置:
1 | ADMIN_EMAIL=admin@example.com |
注意: 我一开始就准备用此方法CSDN里面看到的,但是我当我打开.env文件去查询这2个未找到只找到
1 | COUCHBASE_CONNECTION_STRING=... |
就不敢直接修改了直接选择了方法1进行重新设置密码。
可以注释或删除这两行,然后重建容器:
1 | cd ~/dify/docker |
常见问题
Q: flask reset-password 提示 Account not found
说明输入的邮箱和数据库中的管理员邮箱不一致。参考方法一的第一步,先查数据库确认正确的邮箱。
Q: .env 文件在哪?
如果你是源码部署(目录下有 api/、web/、docker/ 等文件夹),.env 文件在 docker/ 子目录下,不是项目根目录:
1 | cd ~/dify/docker |
总结
| 方法 | 是否丢失数据 | 适用场景 |
|---|---|---|
flask reset-password |
否 | 推荐首选,适用于 Dify 1.13.0 及以上版本 |
修改 .env |
否 | 旧版本 Dify,新版本可能不适用 |
