2025-08-30 123 次
Dify v1.6.0版本重置密码的方法根据部署方式和具体情况有所不同,以下是几种常见的重置密码方法:
通过登录页面的“忘记密码”链接重置:在Dify的登录页面点击“忘记密码”链接,输入注册邮箱地址,系统会发送一个重置密码的链接到该邮箱,通过该链接可以设置新密码。
通过命令行重置(适用于Docker Compose部署):确保Docker环境运行正常,可通过docker ps
命令检查docker - api - 1
容器是否正在运行。在终端中进入./dify/docker
目录,运行docker exec -it docker - api - 1 flask reset - password
命令,根据提示输入忘记密码的管理员邮箱以及两次新密码,即可完成密码重置。
通过修改数据库重置:进入Dify的数据库(PostgreSQL),命令为docker exec -it dify - db psql - U postgres - d dify
(dify - db
是PostgreSQL数据库容器的名称,需替换为实际名称)。查询管理员账号,使用命令SELECT * FROM users WHERE is_admin = true;
。由于密码字段是哈希加密的,不能直接手动修改,建议在登录页面点击“忘记密码”功能进行密码重置;如果必须手动更改密码,可以使用bcrypt
生成新的哈希密码,并更新数据库。生成哈希密码的代码为import bcrypt; hashed_password = bcrypt.hashpw(b"new_password", bcrypt.gensalt()).decode()
,然后在PostgreSQL中执行UPDATE users SET password = '生成的哈希密码' WHERE is_admin = true;
。
通过删除数据库管理员账号重置(仅适用于开发环境):进入Dify的数据库,命令为docker exec -it dify - db psql - U postgres - d dify
。删除所有用户,执行命令DELETE FROM users;
。重启Dify,命令为docker - compose restart
。访问Web页面(http://localhost:3000
),Dify会要求创建新的管理员账号。
根据你提供的 docker ps
输出,Dify v1.6.0 采用 Docker Compose 部署(容器名如 docker_api_1
、docker_db_1
符合默认 Compose 命名规则),推荐通过 命令行重置密码(最直接高效,无需操作数据库),具体步骤如下:
首先需要切换到你部署 Dify 时的 docker
目录(即存放 docker-compose.yml
的目录,通常路径类似 ./dify/docker
,需根据你的实际部署路径调整)。
示例命令(假设 Dify 部署在 ~/dify
目录下):
cd ~/dify/docker # 替换为你的 Dify docker 目录实际路径
从 docker ps
可知,API 容器名为 docker_api_1
(而非之前提到的通用名),直接通过该容器执行 Flask 重置命令:
docker exec -it docker_api_1 flask reset-password
执行命令后,终端会引导你输入 3 类信息,按步骤操作即可:
输入 忘记密码的管理员邮箱(即你注册 Dify 时使用的管理员邮箱,需准确);
输入 新密码(建议包含大小写字母、数字和特殊符号,确保安全性);
再次输入 新密码(确认无输入错误)。 提示类似如下(按实际情况输入):
Enter the admin email: admin@example.com # 你的管理员邮箱 Enter the new password: ******** # 新密码(输入时不显示) Confirm the new password: ******** # 再次确认新密码 Password reset successfully! # 提示此信息即表示重置成功
重置完成后,直接访问 Dify 的 Web 页面(通常是 http://你的服务器IP:3000
,若通过 Nginx 反向代理则可能是 http://你的域名
),使用 原管理员邮箱 + 新密码 即可登录。
若上述命令行方式报错(如“邮箱不存在”),可通过数据库确认管理员邮箱后再操作,步骤如下:
从 docker ps
可知,数据库容器名为 docker_db_1
,执行命令进入:
docker exec -it docker_db_1 psql -U postgres -d dify
(postgres
是默认用户名,dify
是默认数据库名,若部署时修改过需替换)
执行 SQL 语句查询所有管理员账号(is_admin = true
表示管理员):
SELECT email FROM users WHERE is_admin = true;
终端会输出管理员邮箱(如 admin@example.com
),确认后退出数据库:
q # 退出 PostgreSQL 命令行
拿到正确的管理员邮箱后,回到步骤 一、2,重新执行 docker exec -it docker_api_1 flask reset-password
并输入正确邮箱即可。
如果执行过程中遇到具体报错(如容器无响应、命令不存在),可以补充报错信息,以便进一步排查!