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

使用C# MongoDB Driver 2.9.1连接带账号密码的MongoDB认证失败

解决MongoDB Driver 2.9.1认证失败(SCRAM-SHA-1)的问题

我来帮你一步步排查和解决这个认证异常问题:

先修正连接字符串的关键问题

你的连接字符串mongodb://usre1:123@localhost/GSCADB存在两个容易忽略的问题:

  1. 用户名拼写错误:usre1大概率是user1的笔误,这种小失误直接会导致认证失败,先确认用户名是否正确。
  2. 缺少必要的认证参数:MongoDB Driver 2.9.1需要明确指定认证数据库和认证机制,尤其是当用户不是在admin数据库下创建的时候。

修正后的连接字符串可以改成这样:

var client = new MongoClient($"mongodb://user1:123@localhost:27017/GSCADB?authSource=GSCADB&authMechanism=SCRAM-SHA-1");
  • 补充了默认端口27017,避免因端口配置不一致导致连接问题
  • authSource=GSCADB指定用户所在的数据库(如果你的用户是在admin库创建的超级用户,就改成authSource=admin)
  • authMechanism=SCRAM-SHA-1明确指定认证机制,确保和Driver 2.9.1版本兼容

确认MongoDB用户的配置是否正确

确保你的用户是在目标数据库下创建的,并且拥有足够的权限。可以在MongoShell中执行以下命令创建/验证用户:

use GSCADB
// 创建用户(如果还没创建)
db.createUser({
  user: "user1",
  pwd: "123",
  roles: [{ role: "readWrite", db: "GSCADB" }]
})
// 验证用户权限
db.auth("user1", "123")

如果执行db.auth返回1,说明用户配置没问题。

检查MongoDB服务器的认证启用状态

确认你的MongoDB服务器已经开启了认证功能:

  • 命令行启动时,需要添加--auth参数
  • 配置文件启动时,需要确保security.authorization设置为enabled

如果服务器没有启用认证,带用户名密码的连接请求反而会触发认证异常。

顺便优化你的查询代码

你当前的计数方式collection.Find(new BsonDocument()).ToList().Count会把所有文档加载到内存后再计数,数据量大时性能极差。推荐使用服务器端计数的方法:

int TotalFiles = (int)collection.CountDocuments(new BsonDocument());

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:32:23