今天本地win10电脑,使用源码启动dify,忘记了管理员账号和密码,于是网上查找解决办法。
1.有的网上资料说是去数据库删除用户表,于是进入数据库:
docker exec -it docker-db-1 psql -U postgres -d dify
找到postgres数据中的表accounts,delete清空表里面的账号数据。
然后继续进入redis,
docker exec -it docker-redis-1 sh
# docker exec -it docker-redis-1 sh
/data # redis-cli
127.0.0.1:6379> keys *
1) "refresh_token:7d177d5971609013a2c8a5634ce49de1d488332bb5961d8d69ce1a371a3abdeac65d9010df7a6f1e7c73508cbd6733e0c27e2235999ca593192919678ab688b4"
2) "reset_password:account:78837d37-83d0-4e21-88c0-25de52df8ee0"
3) "account_refresh_token:78837d37-83d0-4e21-88c0-25de52df8ee0"
4) "login_error_rate_limit:you-guess@qq.com"
# 查看过期时间,大概还剩23个多小时。。
127.0.0.1:6379> ttl login_error_rate_limit:you-guess@qq.com
(integer) 85202
# 删除这个Key
127.0.0.1:6379> del login_error_rate_limit:you-guess@qq.com
(integer) 1
我干脆直接清空了里面所有的key。发现在dify的install页面还是无法正常重置管理员账户信息(进入页面后它会自己重定向到登录页)。问题没解决。
2.调试前端代码,发现接口返回账号setup信息,于是去数据库清空dify_setups表数据内容。
然后页面会在/install和/signin页面中不断登录跳转来回。问题没解决。
3.于是使出终极大招,删除volumes下数据库相关的文件:
然后按照官网的指南,重新执行数据库的初始化。执行:
docker compose -f docker-compose.middleware.yaml up -d
poetry run flask db upgrade
poetry run flask run --host 0.0.0.0 --port=5001 --debug
最后终于可以正常使用了。这里其实相当于重新部署项目了,旧数据已经被我删了,幸亏我这是开发环境,如果是生产环境,我建议还是进入数据库,修改密码之类的吧。否则数据肯定会丢失了。
如果有其他方法,欢迎一起留言讨论。