如何处理旧版MongoDB升级到新版时密码哈希不兼容
bcrypt哈希值在MongoDB各版本间完全兼容问题根源是认证机制升级旧MONGODB-CR用户需重建为SCRAM-SHA-1FCV须同步更新驱动与连接字符串需显式指定authMechanism。bcrypt 哈希结果在新旧 MongoDB 版本间完全兼容问题不在哈希本身密码哈希值比如 bcrypt 生成的 $2a$10$... 字符串是纯文本存储的MongoDB 从 3.4 到 8.0 都把它当普通字符串字段处理不解析、不校验、不转换。所以你用 bcrypt.hash() 算出来的值存进 4.0、5.0 或 7.0 的 password 字段里读出来也完全一样——这不是兼容性问题而是常见误解。真正出问题的地方认证机制升级导致旧用户无法登录升级 MongoDB 后“密码登不上”90% 是因为服务端启用了更严格的认证机制而旧用户是用老方式创建的没适配新规则。典型现象是连接时抛出MongoSecurityException: Exception authenticating MongoCredential{mechanismSCRAM-SHA-1, ...} 或错误码 18。SCRAM-SHA-1 是 3.0 默认机制但如果你是从 2.6 或早期 3.x 升级上来老用户可能是用已废弃的 MONGODB-CR 创建的新版本服务器拒绝用该机制认证用户创建时指定的 source认证数据库和实际连接时写的 authSource 不一致比如用户在 admin 库创建但连接字符串里写的是 authSourcetestfeatureCompatibilityVersionFCV没及时升级比如卡在 3.6会导致新认证流程被禁用验证并修复用户凭证的实操步骤别急着重设密码先确认问题根源 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手依托大模型帮助用户记录、整理和分析音视频内容体验用大模型做音视频笔记、整理会议记录。