You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB容器未创建指定数据库与用户的问题求助

问题解决:MongoDB容器未自动创建指定数据库和普通用户

核心原因

MongoDB官方社区镜像(mongodb/mongodb-community-server)仅会自动处理MONGODB_INITDB_ROOT_USERNAME和MONGODB_INITDB_ROOT_PASSWORD来创建root管理员用户,MONGO_INITDB_USER、MONGO_INITDB_PWD、MONGO_INITDB_DATABASE这些变量不会自动触发数据库和普通用户的创建——这些变量只是提供给自定义初始化脚本的环境变量,需要手动编写脚本完成创建逻辑。

解决步骤

  1. 创建初始化脚本
    在项目目录下新建./db/mongo/init-user.js文件,写入以下内容:
// 连接到目标数据库
db = db.getSiblingDB(process.env.MONGO_INITDB_DATABASE);

// 创建普通用户并赋予该数据库读写权限
db.createUser({
  user: process.env.MONGO_INITDB_USER,
  pwd: process.env.MONGO_INITDB_PWD,
  roles: [
    { role: "readWrite", db: process.env.MONGO_INITDB_DATABASE }
  ]
});
  1. 修改docker-compose配置
    更新mongo服务的volumes配置,将初始化脚本挂载到容器的/docker-entrypoint-initdb.d/目录(镜像启动时会自动执行该目录下的所有JS/Shell脚本):
mongo:
  image: mongodb/mongodb-community-server
  volumes:
    - type: bind
      source: ./db/mongo
      target: /data/db
    - type: bind
      source: ./db/mongo/init-user.js
      target: /docker-entrypoint-initdb.d/init-user.js
  env_file: .env
  1. 清理旧数据(关键)
    MongoDB初始化脚本只会在首次启动且数据目录为空时执行,所以需要先清理之前挂载的旧数据(注意备份重要数据):
# 停止容器
docker-compose down
# 清理数据目录
rm -rf ./db/mongo/*
  1. 重新启动容器
docker-compose up -d

验证

启动完成后,通过MongoExpress或Studio 3T使用conway用户连接conwaysgame数据库,即可正常访问。

内容的提问来源于stack exchange,提问作者Reda Bourial

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 21:43:18