连接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
相关产品推荐
相关产品推荐

