同一集群内,不同DB是否能使用不同认证方式?
-
同一集群内,因为程序需要使用旧有的认证方式MONGODB-CR,但是其他DB用的是预设的SCRAM-SHA-1的认证方式

是否可以并存2个不同的认证方式呢?
-
不考慮統一? 未來也比較好維護
-
@PTL 修改system.version 的 authSchema版本為3, default 是 5
> use admin switched to db admin > var schema = db.system.version.findOne({"_id" : "authSchema"}) > schema.currentVersion= 3 3 > db.system.version.save(schema)
然後再創建用戶, 該用戶就會是用 MONGODB-CR認證方式, 所以登入驗證是看創建用戶時是用哪個版本的.{
"_id" : "admin.peter",
"user" : "peter",
"db" : "admin",
"credentials" : {
"MONGODB-CR" : "4bbb5dc38596aed15e8eb8ead050f4ff"
}
-
可以做得到,但是不建议这样做。如果你已经有了SCRAM-SHA-1的用户,说明你的system.version中已经是authSchema=5,所以将来的所有新用户都将是SCRAM-SHA-1,包括MONGODB-CR的那些用户,一旦有任何更新,也会更新为SCRAM-SHA-1。
如果Java驱动版本足够新,它应该能够自己选择账户的类型是MONGODB-CR还是SCRAM-SHA-1,切忌自己在连接字符串或者代码中指定,因为将来一量发生账户更新,你的指定可能就是错的。
其实在升级到3.0的过程中,理论上如果你们有按照文档所示走完所有更新流程,账户中应该已经没有MONGODB-CR了,并且MONGODB-CR因为安全性不如SCRAM-SHA-1,已经不推荐使用。所以为什么不早点更新所有的账户呢?