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

连接Mongo Docker容器时出现AuthenticationFailed认证失败错误

MongoDB容器连接认证错误排查

我尝试连接Mongo容器,但持续遇到认证错误。
认证错误截图

相关配置文件

docker-compose.yaml

mongo:
  image: mongo:latest
  container_name: mongo
  hostname: mongo
  command: [--auth]
  env_file: .env
  volumes:
    - ./docker/mongo-seed/scripts:/docker-entrypoint-initdb.d:ro
  restart: always
  ports:
    - "27017:27017"

.env文件

MONGO_DATABASE_NAME=app-local
MONGO_CONNECTION_STRING=mongodb://{0}:{1}@localhost:27017
MONGO_USER=user-local
MONGO_PASSWORD=pwd-local

初始化脚本001_initial_script.js

db = db.getSiblingDB("admin")

db.createUser({
    user: process.env["MONGO_USER"],
    pwd: process.env["MONGO_PASSWORD"],
    roles: [
        {
            role: 'dbOwner',
            db: process.env["MONGO_DATABASE_NAME"],
        },
    ],
});

db = db.getSiblingDB(process.env["MONGO_DATABASE_NAME"])

排查与解决建议

  • 初始化脚本未执行:Mongo仅在首次启动且数据卷为空时运行/docker-entrypoint-initdb.d下的脚本。若之前启动过容器,需清除数据卷(执行docker-compose down -v)后重新启动,确保脚本创建用户。
  • 连接字符串缺少认证库:用户创建在admin库,但连接时默认用目标库app-local会导致认证失败。修改连接字符串为mongodb://{0}:{1}@localhost:27017/?authSource=admin,指定认证库为admin。
  • 环境变量未加载:进入容器执行echo $MONGO_USER,确认环境变量是否正确传递。若未加载,检查docker-compose.yaml中env_file路径是否正确,或改用environment字段显式配置变量。
  • 启动命令格式优化:将command: [--auth]改为command: mongod --auth,确保Mongo正确启用认证模式。

内容的提问来源于stack exchange,提问作者Gabriel Bernardone

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 12:27:40