pymongo 密码登陆问题

之前开发环境 mongodb 是不加密的,但是为了安全现在加了密。加密之后, python 脚本验证就出了错,老是报 

pymongo.errors.OperationFailure: command SON([('authenticate', 1), ('user', u'root'), ('nonce', u'd241d9ac68d60c23'), ('key', u'faf58ba5fa56b301811e188048e0a5bf')]) failed: auth failed

然后找了一通,发现是版本问题。

错误的环境是, python 2.6 + pymongo 2.6 + mongodb 3.6 ,然后我就改了一下验证方式

dbs.authenticate("root","1234560.") 

改为:

dbs.authenticate("root","1234560.", "MONGODB-CR") 

然后发现报错:
pymongo.errors.Configurati: authMechanism must be in frozenset(['PLAIN', 'MONGODB-CR', 'GSSAPI', 'MONGODB-X509'])

看了一下 官方文档

  • PyMongo 3.7.1 documentation

mongo2.7及以下的版本,用户认证加密方式默认是“MONGODB-CR”,而mongodb3之后的用户认证加密方式默认改为“SCRAM-SHA-1”,而旧版本的mongo driver(即pymongo)是不支持“SCRAM-SHA-1”这种加密方式,需要更新到2.8以后版本的pymongo才支持。

所以,把 pymongo 升级到 3.8,就行了,也不用指定验证方式,直接  dbs.authenticate("root","1234560.")  就行。

你可能感兴趣的:(规则,就是用来打破的(底层技术))