Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MongoDB无法启动或启动后无法正常使用的讨论(启动失败、用户未注册等问题看这) #823

Closed
5 tasks done
229250919 opened this issue Feb 3, 2024 · 49 comments
Labels
bug Something isn't working

Comments

@229250919
Copy link

例行检查

  • 我已确认目前没有类似 issue
  • 我已完整查看过项目 README,以及项目文档
  • 我使用了自己的 key,并确认我的 key 是可正常使用的
  • 我理解并愿意跟进此 issue,协助测试和提供反馈
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

你的版本

  • [ 4.6.8] 私有部署版本

问题描述
使用docker compose部署初始化mongo副本集提示This node was not started with the replSet option
复现步骤
按照教程操作,在第四步初始化 Mongo 副本集中,
执行

初始化副本集。

rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "mongo:27017" }
]
})
报错
相关截图
image

@229250919 229250919 added the bug Something isn't working label Feb 3, 2024
@huluohu
Copy link

huluohu commented Feb 4, 2024

  1. Generate keyFile
openssl rand -base64 128 > ./mongodb/keyFile
  1. Add command and volumes to the docker-compose.yml file and start the mongodb container

command

command: --replSet rs0 --bind_ip_all --keyFile /data/mongodb/keyFile

Volumes

volumes:
      - /share/Container/mongodb/keyFile:/data/mongodb/keyFile
  1. Use the following steps to connect to mongodb
# Enter the container
docker exec -it mongo bash

# Connect to the database and complete the verification
mongo
use admin
db.auth('username','password')

# Initialize the replica set, note that the host should be changed to the actual IP of your own machine
rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "192.168.31.91:27017" }
  ]
})

@lijiajun1997
Copy link

需要把docker compose手动更新一下

@871052165
Copy link

我是提示用户未注册,按照教程来了一遍,也没啥用

@huluohu
Copy link

huluohu commented Feb 4, 2024

我是提示用户未注册,按照教程来了一遍,也没啥用

因为mongodb没正常启动

@871052165
Copy link

我是提示用户未注册,按照教程来了一遍,也没啥用

因为mongodb没正常启动

大神,那该怎么弄啊,哈哈

@c121914yu
Copy link
Collaborator

https://fastgpt-staging.vercel.app/docs/development/docker/
可以看这个还没合并的文档

@229250919
Copy link
Author

229250919 commented Feb 4, 2024

  1. Generate keyFile
openssl rand -base64 128 > ./mongodb/keyFile
  1. Add command and volumes to the docker-compose.yml file and start the mongodb container

command

command: --replSet rs0 --bind_ip_all --keyFile /data/mongodb/keyFile

Volumes

volumes:
      - /share/Container/mongodb/keyFile:/data/mongodb/keyFile
  1. Use the following steps to connect to mongodb
# Enter the container
docker exec -it mongo bash

# Connect to the database and complete the verification
mongo
use admin
db.auth('username','password')

# Initialize the replica set, note that the host should be changed to the actual IP of your own machine
rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "192.168.31.91:27017" }
  ]
})

非常感谢,问题解决了,不过需要在你这教程基础上再加上两行命令,修改下keyfile的权限
chmod 600 /data/keyfile/mongoReplSet-keyfile chown 999:root /data/keyfile/mongoReplSet-keyfile

@229250919
Copy link
Author

https://fastgpt-staging.vercel.app/docs/development/docker/ 可以看这个还没合并的文档


非常感谢,上面的方法已经解决

@ChiayenGu
Copy link

ChiayenGu commented Feb 5, 2024

非常感谢,问题解决了,不过需要在你这教程基础上再加上两行命令,修改下keyfile的权限
chmod 600 /data/keyfile/mongoReplSet-keyfile
chown 999:root /data/keyfile/mongoReplSet-keyfile

谢谢,这个方法已经解决。我之前差一步更改文件的所有权限。

@huluohu
Copy link

huluohu commented Feb 5, 2024

  1. Generate keyFile
openssl rand -base64 128 > ./mongodb/keyFile
  1. Add command and volumes to the docker-compose.yml file and start the mongodb container

command

command: --replSet rs0 --bind_ip_all --keyFile /data/mongodb/keyFile

Volumes

volumes:
      - /share/Container/mongodb/keyFile:/data/mongodb/keyFile
  1. Use the following steps to connect to mongodb
# Enter the container
docker exec -it mongo bash

# Connect to the database and complete the verification
mongo
use admin
db.auth('username','password')

# Initialize the replica set, note that the host should be changed to the actual IP of your own machine
rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "192.168.31.91:27017" }
  ]
})

非常感谢,问题解决了,不过需要在你这教程基础上再加上两行命令,修改下keyfile的权限 chmod 600 /data/keyfile/mongoReplSet-keyfile chown 999:root /data/keyfile/mongoReplSet-keyfile

You're right. I forgot it.

@sansiny
Copy link

sansiny commented Feb 5, 2024

chown 999:root

感谢,还好有这个命令,不然启动不了容器

@871052165
Copy link

  1. 生成 keyFile
openssl rand -base64 128 > ./mongodb/keyFile
  1. 将命令和卷添加到docker-compose.yml文件并启动 mongodb 容器

命令

command: --replSet rs0 --bind_ip_all --keyFile /data/mongodb/keyFile

volumes:
      - /share/Container/mongodb/keyFile:/data/mongodb/keyFile
  1. 使用以下步骤连接到 mongodb
# Enter the container
docker exec -it mongo bash

# Connect to the database and complete the verification
mongo
use admin
db.auth('username','password')

# Initialize the replica set, note that the host should be changed to the actual IP of your own machine
rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "192.168.31.91:27017" }
  ]
})

非常感谢,问题解决了,不过需要在你这教程基础上再加上两行命令,修改下keyfile的权限 chmod 600 /data/keyfile/mongoReplSet-keyfile chown 999:root /data/keyfile/mongoReplSet-keyfile

按照此方法设置了,但是还是存在问题:
image
image

@871052165
Copy link

chown 999:root

感谢,还好有这个命令,不然启动不了容器

完全没看懂这个命令要怎么使用

@C-Dragon8
Copy link

尝试此方法、以及帮助文档提供的部署流程后,仍然无法正常启动mongo容器。
4.6.8版本以前无此问题。

@C-Dragon8
Copy link

  1. 生成 keyFile
openssl rand -base64 128 > ./mongodb/keyFile
  1. 将命令和卷添加到docker-compose.yml文件并启动 mongodb 容器

命令

command: --replSet rs0 --bind_ip_all --keyFile /data/mongodb/keyFile

volumes:
      - /share/Container/mongodb/keyFile:/data/mongodb/keyFile
  1. 使用以下步骤连接到 mongodb
# Enter the container
docker exec -it mongo bash

# Connect to the database and complete the verification
mongo
use admin
db.auth('username','password')

# Initialize the replica set, note that the host should be changed to the actual IP of your own machine
rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "192.168.31.91:27017" }
  ]
})

非常感谢,问题解决了,不过需要在你这教程基础上再加上两行命令,修改下keyfile的权限 chmod 600 /data/keyfile/mongoReplSet-keyfile chown 999:root /data/keyfile/mongoReplSet-keyfile

按照此方法设置了,但是还是存在问题:
image
image

这个应该是因为你一开始没有创key文件,但是又挂载了,导致docker启动时候自动创建了一个目录。 需要删除同名目录,并且down后重启。 chmod 600 key文件赋予读写权限。如果文件和docker不是同一个用户,可以用chmod 999

感谢答复🙏,使用chmod 999 命令后可以正常启动mongo容器了。

@jjdctg
Copy link

jjdctg commented Feb 13, 2024

按照官方文档 第四步 还是无法启动mongo
Snipaste_2024-02-13_12-06-14

@jjdctg
Copy link

jjdctg commented Feb 13, 2024

Snipaste_2024-02-13_12-11-03

@c121914yu
Copy link
Collaborator

c121914yu commented Feb 14, 2024

统一回复不熟 docker 的同学。副本未成功启用会造成几种现象:

  1. 数据库一直重启,日志会提示没有 key 或者没权限。
  2. 用户未注册。由于注册需要用刀副本集,没开启肯定会注册失败。

按前面讨论修改,仍无效的可能:

  1. 修改后没有 down 掉服务再 up。restart 是没用的。
  2. 原本没有创建 key,up 后 docker 会自动创建一个目录。需要手动删掉后再创建新的 key 挂载进去。

如果 chown 999:root mongodb.key 仍提示无权限,先检查文件拥有者是否正确了,如果已经正确了的话可能就是不同内核的镜像有区别(不太可能),自行谷歌解决。 centos7,ubuntu20 22测试均有效。

@HotelEnglish
Copy link

看到很多人在更新4.6.8时遇到了麻烦,我特意写了个更新教程:https://begs.cn/tools/ai/3217.html

@c121914yu c121914yu changed the title 使用docker compose部署初始化mongo副本集提示This node was not started with the replSet option MongoDB无法启动或启动后无法正常使用的讨论(启动失败、用户未注册等问题看着) Feb 17, 2024
@c121914yu c121914yu changed the title MongoDB无法启动或启动后无法正常使用的讨论(启动失败、用户未注册等问题看着) MongoDB无法启动或启动后无法正常使用的讨论(启动失败、用户未注册等问题看这) Feb 17, 2024
@Sui-Xing
Copy link

看到很多人在更新4.6.8时遇到了麻烦,我特意写了个更新教程: https://begs.cn/tools/ai/3217.html

按照教程来了一遍成功登录,解决了“用户未注册”的问题

@nightzjp
Copy link

windows 版本升级还是不得行(mac没问题):
image

@liuyichens
Copy link

windows 版本升级还是不得行(mac没问题): image

同样的问题

@nightzjp
Copy link

可以不升级mingo | | seven_nighter | | @.*** | ---- 回复的原邮件 ---- | 发件人 | @.> | | 发送日期 | 2024年02月21日 13:17 | | 收件人 | labring/FastGPT _@**._> | | 抄送人 | _@.>, Comment @._> | | 主题 | Re: [labring/FastGPT] MongoDB无法启动或启动后无法正常使用的讨论(启动失败、用户未注册等问题看这) (Issue #823) | windows 版本升级还是不得行(mac没问题): 同样的问题 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: _@_.*>

windows 下无法执行 chown 999:root ./mongodb.key 这个命令,我尝试4.4.24这个版本的mongodb也不行

windows下不支持某些指令,哪怕执行成功也不会生效;
Windows下可以用icacls mongodb.key /grant:r :RW这个指令替代chmod;

mongo不升级的话,删除创建的应用会提示错误。其他的我没发现有影响的。

@ringwraith
Copy link

ringwraith commented Feb 22, 2024

windows下不能修改权限的问题,修改一下docker-compose.yml可解决

  mongo:
    image: mongo:5.0.18
    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云
    container_name: mongo
    ports:
      - 27017:27017
    networks:
      - fastgpt
    command: mongod --keyFile /data/mongodb.key --replSet rs0
    environment:
      # 默认的用户名和密码,只有首次允许有效
      - MONGO_INITDB_ROOT_USERNAME=myname
      - MONGO_INITDB_ROOT_PASSWORD=mypassword
    volumes:
      - ./mongo/data:/data/db
      - ./mongodb.key:/data/mongodb.key
    entrypoint:
      - bash
      - -c
      - |
          chmod 400 /data/mongodb.key
          chown 999:999 /data/mongodb.key
          exec docker-entrypoint.sh $$@

@nightzjp
Copy link

windows下不能修改权限的问题,修改一下docker-compose.yml可解决 mongo: image: mongo:5.0.18 # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云 container_name: mongo ports: - 27017:27017 networks: - fastgpt command: mongod --keyFile /data/mongodb.key --replSet rs0 environment: # 默认的用户名和密码,只有首次允许有效 - MONGO_INITDB_ROOT_USERNAME=myname - MONGO_INITDB_ROOT_PASSWORD=mypassword volumes: - ./mongo/data:/data/db - ./mongodb.key:/data/mongodb.key entrypoint: - bash - -c - | chmod 400 /data/mongodb.key chown 999:999 /data/mongodb.key exec docker-entrypoint.sh $$@

感谢感谢,我试下看

@nightzjp
Copy link

windows下不能修改权限的问题,修改一下docker-compose.yml可解决

  mongo:
    image: mongo:5.0.18
    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云
    container_name: mongo
    ports:
      - 27017:27017
    networks:
      - fastgpt
    command: mongod --keyFile /data/mongodb.key --replSet rs0
    environment:
      # 默认的用户名和密码,只有首次允许有效
      - MONGO_INITDB_ROOT_USERNAME=myname
      - MONGO_INITDB_ROOT_PASSWORD=mypassword
    volumes:
      - ./mongo/data:/data/db
      - ./mongodb.key:/data/mongodb.key
    entrypoint:
      - bash
      - -c
      - |
          chmod 400 /data/mongodb.key
          chown 999:999 /data/mongodb.key
          exec docker-entrypoint.sh $$@

可行。刚刚测试过了。再次感谢!

@ChiayenGu
Copy link

如果从4.6.7升级到4.6.8的过程中执行了官网的操作

rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "mongo:27017" }
  ]
})

后续还想让外网访问数据库,再次执行rs.initiate操作不会重写现有的配置,可以使用rs.reconfig()应用新的配置。

操作如下:

# 进入容器,进入mongo shell
docker exec -it mongo bash
mongo
use admin
db.auth('username','password')

# 获取当前的副本集配置
var cfg = rs.conf()

#  将mongo:27017改为ip:27017(假设ip是实际ip地址)
cfg.members[0].host = "ip:27017"

# 应用新的配置
rs.reconfig(cfg, { force: true })

# 验证配置并检查状态
rs.conf()
rs.status()

在进行任何这些更改之前,建议备份任何关键数据。

@fengyepan
Copy link

1

@yakami129
Copy link

mac m1 运行 chown 999:root ./mongodb.key,出现以下异常
image

@Cartride
Copy link

wsl部署,第一次运行没问题,后面重启就报Operation auth_codes.findOne() buffering timed out after 10000ms错误是什么原因

@wenwenc9
Copy link

wenwenc9 commented Feb 28, 2024

针对 windows 改不了 chmod情况 :

image

然后docker操作:
image

@qqqzhch
Copy link

qqqzhch commented Mar 1, 2024

用docker 启动数据库后,获取源代码,用源代码链接数据库 就报这个的错误了 @229250919
环境是wsl2 配置都是文档的默认配置
数据库链接 字符串如下
mongodb://myname:mypassword@0.0.0.0:27017/fastgpt?authSource=admin
[ERROR] 2024-03-01 09:07:07 response error: Operation users.findOne() buffering timed out after 10000ms
{
message: 'Operation users.findOne() buffering timed out after 10000ms',
stack: 'MongooseError: Operation users.findOne() buffering timed out after 10000ms\n' +
' at Timeout.eval (webpack-internal:///node_modules/.pnpm/mongoose@7.6.8/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js:186:23)\n' +
' at listOnTimeout (node:internal/timers:569:17)\n' +
' at process.processTimers (node:internal/timers:512:7)'
}
error-> mongo connect error MongooseServerSelectionError: getaddrinfo ENOTFOUND mongo

@qqqzhch
Copy link

qqqzhch commented Mar 1, 2024

用docker 启动数据库后,获取源代码,用源代码链接数据库 就报这个的错误了 @229250919 环境是wsl2 配置都是文档的默认配置 数据库链接 字符串如下 mongodb://myname:mypassword@0.0.0.0:27017/fastgpt?authSource=admin [ERROR] 2024-03-01 09:07:07 response error: Operation users.findOne() buffering timed out after 10000ms { message: 'Operation users.findOne() buffering timed out after 10000ms', stack: 'MongooseError: Operation users.findOne() buffering timed out after 10000ms\n' + ' at Timeout.eval (webpack-internal:///node_modules/.pnpm/mongoose@7.6.8/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js:186:23)\n' + ' at listOnTimeout (node:internal/timers:569:17)\n' + ' at process.processTimers (node:internal/timers:512:7)' } error-> mongo connect error MongooseServerSelectionError: getaddrinfo ENOTFOUND mongo
搞定了这里的mongo要改为ip地址
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "mongo:27017" }
]

@c121914yu
Copy link
Collaborator

c121914yu commented Mar 1, 2024

```shell
openssl rand -base64 128 > ./mongodb/keyFile
mongo:
    image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18
    container_name: mongotest
    restart: always
    ports:
      - 27017:27017
    networks:
      - fastgpt
    command:  mongod --keyFile /data/mongodb.key --replSet rs0
    environment:
      - MONGO_INITDB_ROOT_USERNAME=myusername
      - MONGO_INITDB_ROOT_PASSWORD=mypassword
    volumes:
      - ./mongo/data:/data/db
    entrypoint:
      - bash
      - -c
      - |
          openssl rand -base64 128 > /data/mongodb.key
          chmod 400 /data/mongodb.key
          chown 999:999 /data/mongodb.key
          exec docker-entrypoint.sh $$@

进一步修改,直接也不需要在外面创建 mongokey 了。
实测centor和ubutuntu可用,其他环境可以试试。这个可以的话扣下~

@TangGuohh
Copy link

针对 windows 改不了 chmod情况 :

image

然后docker操作: image

这个docker操作在哪里打开?打开什么软件能输入这个命令?我用git bash可以吗

@xcity
Copy link

xcity commented Mar 3, 2024

前几天试用最新版本的时候在mongoDB 上遇到一些问题,将经验总结一下,申明这些经验只适用于 Macbook M 处理器。

  1. docker-compose.yaml里面有两个 mongodb 的地址,阿里云的镜像里面是不支持 ARM 处理器的,原始镜像里面的 mongoDB 是支持 ARM 以及 X86,所以优先选择缺省地址。
  2. key 权限的设置,可以参考 windows 处理办法,就是在mongoDB 的部分,添加entrypoint 来设置对应的权限。

@daxiamogu
Copy link

chmod 600 /data/keyfile/mongoReplSet-keyfile chown 999:root /data/keyfile/mongoReplSet-keyfile

在mac需要把root换成admin

@palluo
Copy link

palluo commented Mar 18, 2024

如果本地连接服务器的MongoDB是正常的,但是代码连接getaddrinfo ENOTFOUND mongo错误,可以设置&directConnection=true参数

@yanxu4780
Copy link

我正常初始化了,可是在知识库里面添加时候提示null value in column "tmb_id" of relation "modeldata" violates not-null constraint,重新初始化也不行。谁知道怎么办。

@wenchao1234
Copy link

一个mongo副本集配置问题 还要恶心几代人?

@c121914yu
Copy link
Collaborator

最新部署文件已加入全自动化。命令没有环境差异。不是内核太垃圾导致数据库无法启动的,都能直接运行。

@Kaiwen6
Copy link

Kaiwen6 commented Apr 2, 2024

针对 windows 改不了 chmod情况 :

image

然后docker操作: image

我使用的docker-compose版本比较老,参考这个方法成功点亮,老哥牛逼

@c121914yu c121914yu unpinned this issue Apr 10, 2024
@yanxu4780
Copy link

我正常初始化了,可是在知识库里面添加时候提示null value in column "tmb_id" of relation "modeldata" violates not-null constraint,重新初始化也不行。谁知道怎么办。

这个问题我解决了,不是MongoDB的问题,是PG的问题,进入PG数据库,然后修改表:
ALTER TABLE modeldata ALTER COLUMN tmb_id DROP NOT NULL;

然后就解决了。如果还有其他字段提示唯空,那就再修改下相关表的字段。

@nigo81
Copy link

nigo81 commented Apr 19, 2024

前几天试用最新版本的时候在mongoDB 上遇到一些问题,将经验总结一下,申明这些经验只适用于 Macbook M 处理器。

  1. docker-compose.yaml里面有两个 mongodb 的地址,阿里云的镜像里面是不支持 ARM 处理器的,原始镜像里面的 mongoDB 是支持 ARM 以及 X86,所以优先选择缺省地址。
  2. key 权限的设置,可以参考 windows 处理办法,就是在mongoDB 的部分,添加entrypoint 来设置对应的权限。

请问给以给下具体配置吗?我是macbook m3,不太会

@yhw17
Copy link

yhw17 commented Apr 28, 2024

看到很多人在更新4.6.8时遇到了麻烦,我特意写了个更新教程:https://begs.cn/tools/ai/3217.html

必须给你赞一个👍👍👍,搞了2个小时,登录一直失败

此外,后来的同学请务必按照龚老师的教程来,千万不要自作聪明,我的config.json没复制龚老师的,就一直有问题,感谢龚老师的教程💕💕💕

@xiaoToby
Copy link

@HotelEnglish 哥,你的链接不行了

@jianghu52
Copy link

我再添加一种情形,会导致mongodb连接不上。
wsl2,ubuntu 22,docker-compose安装。

当使用 非sudo账户 使用命令 docker-compose up -d 安装时,一切正常,但是启动之后,会发现mongodb一直在等待启动。
此时,如果使用mongo -u username -p password --authenticationDatabase admin 连接docker中的mongodb时,会发现连接失败。(无论是5.0版本,还是4.X版本都一样)

需要sudo -i 之后的账户,启动docker-compose up -d之后,再用mongo -u username -p password --authenticationDatabase admin连接mongodb。会发现可以连接,然后再调用命令

rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "mongo:27017" }
  ]
})

就可以了。然后再重启,就会发现mongodb可以连上。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests