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

从C#客户端连接MongoDB时出现认证错误求助

MongoDB认证失败问题解决

问题详情

使用如下docker-compose.yml部署MongoDB及Mongo-Express:

mongo:
  container_name: Mongo
  image: mongo
  environment:
    - MONGO_INITDB_ROOT_USERNAME=user
    - MONGO_INITDB_ROOT_PASSWORD=password
    - MONGO_INITDB_DATABASE=admin 
  ports:
    - 27017:27017
mongo-express:
  image: mongo-express
  container_name: MongoExpress
  environment:
    - ME_CONFIG_MONGODB_ENABLE_ADMIN=true
    - ME_CONFIG_MONGODB_ADMINUSERNAME=user
    - ME_CONFIG_MONGODB_ADMINPASSWORD=password
    - ME_CONFIG_MONGODB_SERVER=mongo
  links:
    - mongo
  ports:
    - 8081:8081

使用连接字符串 mongodb://user:password@127.0.0.1:27017 连接时,触发认证错误:

MongoDB.Driver.MongoAuthenticationException: Unable to authenticate using sasl protocol mechanism SCRAM-SHA-1.
---> MongoDB.Driver.MongoCommandException: Command saslStart failed: Authentication failed..

解决步骤

1. 修正连接字符串,指定认证数据库

MongoDB的root用户默认创建在admin数据库下,连接时必须明确指定认证源。将连接字符串修改为:

mongodb://user:password@127.0.0.1:27017/?authSource=admin

2. 清理残留的容器数据(若上述方法无效)

如果之前启动过Mongo容器,可能存在旧的认证缓存或数据,需要彻底清理后重新部署:

  • 停止并删除现有容器:
    docker-compose down
    
  • 删除MongoDB关联的数据卷(此操作会清除所有数据库数据,确认无重要数据再执行):
    docker volume rm $(docker volume ls -q | grep mongo)
    
  • 重新启动服务:
    docker-compose up -d
    

3. 验证Mongo-Express的连通性

先通过Mongo-Express确认MongoDB的用户配置正常:
访问 http://127.0.0.1:8081,使用配置的user和password登录。若能成功进入,说明MongoDB的用户认证本身无问题,问题仅出在客户端连接字符串的配置。

4. 强制指定认证机制(针对驱动兼容性问题)

部分旧版本MongoDB驱动可能不兼容容器内MongoDB默认的SCRAM-SHA-256机制,可在docker-compose.yml的mongo服务中添加环境变量强制使用SCRAM-SHA-1:

mongo:
  container_name: Mongo
  image: mongo
  environment:
    - MONGO_INITDB_ROOT_USERNAME=user
    - MONGO_INITDB_ROOT_PASSWORD=password
    - MONGO_INITDB_DATABASE=admin 
    - MONGO_AUTH_MECHANISM=SCRAM-SHA-1  # 添加此行
  ports:
    - 27017:27017

修改后重启容器即可。

内容的提问来源于stack exchange,提问作者Jaczura Zoltán

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 07:57:43