python2.7 + pymongo:错误:使用 SCRAM-SHA-256 需要未消化的密码

Posted

技术标签:

【中文标题】python2.7 + pymongo:错误:使用 SCRAM-SHA-256 需要未消化的密码【英文标题】:python2.7 + pymongo: error: Use of SCRAM-SHA-256 requires undigested passwords 【发布时间】:2019-07-08 10:27:28 【问题描述】:

试图复兴一个旧的 python 应用程序。 Python 脚本正在尝试连接到 mongo。收到此错误:

使用 SCRAM-SHA-256 需要未消化的密码

Mac OSX 10.13.6 conda 环境,为用户在本地安装的所有软件包。 python2.7(不能升级) pymongo 2.9.1

pip2.7 install -r requirements安装的其他东西:

Flask==0.10.1
Flask-Cors==2.1.2
Flask-PyMongo==0.3.1

在 Mongo 中,我创建了一个管理员用户: db.createUser(user:"admin", pwd:"abc123",roles:[role:"userAdminAnyDatabase",db:"admin"], passwordDigestor:"server" ) 我可以用db.getUsers() 看到它。还尝试了mechanisms : [“SCRAM-SHA-256”], mechanisms : [“SCRAM-SHA-1”] 和他们两个。运行我的python脚本总是给出这个:

Traceback(最近一次调用最后一次):文件“pymm_run.py”,第 467 行,在 args.func(args) 文件“pymm_run.py”,第 186 行,在 bootstrap_restore db = get_db() 文件“/Users/myuser/matchminer-api/matchminer/database.py”,第 50 行,在 获取数据库 连接[MONGO_DBNAME].add_user(MONGO_USERNAME, MONGO_PASSWORD) 文件 “/Users/myuser/miniconda3/envs/matchminer/lib/python2.7/site-packages/pymongo/database.py”, 第 966 行,在 add_user (not uinfo["users"]), name, password, read_only, **kwargs) File "/Users/myuser/miniconda3/envs/matchminer/lib/python2.7/site-packages/pymongo/database.py", 第 892 行,在 _create_or_update_user read_preference=ReadPreference.PRIMARY, **opts) 文件 "/Users/myuser/miniconda3/envs/matchminer/lib/python2.7/site-packages/pymongo/database.py", 第 535 行,在命令中 codec_options, **kwargs)[0] 文件 "/Users/myuser/miniconda3/envs/matchminer/lib/python2.7/site-packages/pymongo/database.py", 第 440 行,在 _command 中 味精,allowable_errors)文件“/Users/myuser/miniconda3/envs/matchminer/lib/python2.7/site-packages/pymongo/helpers.py”, 第 213 行,在 _check_command_response raise OperationFailure(msg % errmsg, code, response) pymongo.errors.OperationFailure: command SON([('createUser', 'user'), ('pwd', u'fa26a506aa0f786a447bbd6d1caaa8b5'), ('digestPassword', False), ('roles', ['dbOwner']), ('writeConcern', )]) 在命名空间上 matchminer.$cmd 失败:使用 SCRAM-SHA-256 需要未消化 密码

为什么会发生这种情况,有什么补救措施? 谢谢

【问题讨论】:

【参考方案1】:

检查您的 pymongo 版本。如ansible模块页面所述:

需要远程主机上的 pymongo Python 包,版本 2.4.2+。这可以使用 pip 或 OS 包管理器安装。 @见http://api.mongodb.org/python/current/installation.html

我只是运行 pip -U install pymongo

【讨论】:

以上是关于python2.7 + pymongo:错误:使用 SCRAM-SHA-256 需要未消化的密码的主要内容,如果未能解决你的问题,请参考以下文章

ImportError: No module named 'pymongo'

MongoDB之pymongo

如何使用 pymongo 将新的值数组附加到 mongodb 中的现有数组文档?

python2.7使用pip安装包一直错误

Pymongo 排序错误

如何使用 Apache Kafka 修复 Python2.7 中的“AssertionError: Value must be bytes”错误