mongodb 6.0 彻底移除 mongodb-cr 和 scram-sha-1,仅保留 scram-sha-256;旧用户凭据无法加载,必须用 db.createuser() 重建并显式指定 mechanisms: ["scram-sha-256"],同时驱动需升级、连接串须含 authmechanism=scram-sha-256。

MongoDB 6.0 不是“默认弃用”,而是彻底移除了 MONGODB-CR —— 它连加载都不允许,服务启动直接失败。
为什么 MONGODB-CR 在 6.0 完全不可用
MONGODB-CR 早在 3.0 就被标记为 deprecated,4.0 彻底删掉了所有相关逻辑:认证流程、authSchemaUpgrade 命令、copydb 的兼容路径。到 6.0,它已从源码中物理消失。如果你的 admin.system.users 里还存着 mechanisms: ["MONGODB-CR"] 的用户,mongod 启动时会报 Ignoring user : unsupported authentication mechanism,并跳过该用户——不是警告,是静默丢弃。
SCRAM-SHA-1 也一样被砍掉了
别只盯着 MONGODB-CR:MongoDB 6.0 同时移除了 SCRAM-SHA-1。现在唯一接受的内置机制只有 SCRAM-SHA-256。这意味着:
- 旧用户凭据(无论 SHA-1 还是 CR)无法复用,
db.updateUser()不起作用 —— 它不改哈希算法 - 必须用
db.createUser()重建用户,并显式写mechanisms: ["SCRAM-SHA-256"] - 连接字符串里必须带
&authMechanism=SCRAM-SHA-256,不能依赖驱动自动 fallback - 老版本
mongosh(如 mongodb-driver-sync 同理
应用连不上,八成不是数据库配错了
常见现象是:mongod 能启、用户能建、mongosh --authenticationMechanism SCRAM-SHA-256 能连,但应用死活报 Authentication failed。这时候要查三处:
- 驱动版本是否 ≥ 推荐最低版(如 Java 是 4.11+,Node.js 是 6.3+)
- 连接 URI 是否漏了
&authMechanism=SCRAM-SHA-256,尤其当authSource=admin已存在时,这个参数仍需显式声明 - 密码含
@、:、/等字符?没做 URL 编码会导致解析错乱,连认证库都指定错了
最易忽略的一点:即使你用 4.x 或 5.x 创建过用户,只要当时没强制指定 mechanisms,MongoDB 默认存的是 SHA-1 —— 到 6.0 就是无效凭据。迁移不是改配置,是重置凭证+升级驱动+修正连接串,三者缺一不可。











