1. 背景
在对FastGPT进行本地化开发时,启动项目后登录时持续报错,错误信息是 init root user error MongooseError: Operation users.findOne()
buffering timed out after 10000ms
2. 解决方案
错误分析:错误来自MongoDB数据库连接。
2.1 方案(一):数据库用户名和密码是否配置正确?
MongoDB 数据库的用户名和密码来自docker-compose.yml
文件中(最初下载docker镜像时的文件)。如果使用默认配置文件,用户名是myusername
,密码是mypassword
。
因此,在.env.local
文件中,修改内容:
# mongo 数据库连接参数,本地开发连接远程数据库时,可能需要增加 directConnection=true 参数,才能连接上。
MONGODB_URI=mongodb://myusername:mypassword@127.0.0.1:27017/fastgpt?authSource=admin&directConnection=true
# PG 向量库连接参数
PG_URL=postgresql://username:password@127.0.0.1:5432/postgres
修改mongo 数据库的用户名和密码,添加directConnection=true
参数。
2.2 方案(二):MongoDB 副本集是否未初始化?
初始化 MongoDB 副本集步骤:
第一步:启动 Docker Compose:
docker-compose up -d
或者 docker compose up -d
第二步:进入 MongoDB 容器:
docker-compose exec mongo bash
或者docker exec -it mongo bash
第三步:连接到 MongoDB:
mongo -u myusername -p mypassword --authenticationDatabase admin
第四步:初始化副本集:
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "mongo:27017" }
]
})
第五步:检查副本集状态:
rs.status()
第六步:退出 MongoDB shell 和容器:
exit
exit
完成以上步骤后,MongoDB 副本集就初始化成功了。由于当前配置中只有一个 MongoDB 节点,所以副本集中只有一个成员。
之后重新运行项目就可以登录成功了!