我已经安装了mongodb并启用了auth.和它的工作发现.我可以使用robomongo应用程序从远程笔记本连接它:
Host: SERVER_IP
PORT: 27017
DATEBASE: prod-db
USERNAME: user_name
PASS: user_password
Auth Mechanism: MONGODB-CR
Run Code Online (Sandbox Code Playgroud)
我们可以使用以下方式从本地连接服务器shell:
$ mongo prod-db -u user_name -p user_password
Run Code Online (Sandbox Code Playgroud)
一切正常,但是当我们尝试使用pymongo api时.身份验证失败.下面是python代码:
from pymongo import MongoClient
client = MongoClient()
client.prod_db.authenticate('user_name', 'user_password', mechanism='MONGODB-CR')
db = client.prod_db
result = db.users.find()
for document in result:
print(document)
Run Code Online (Sandbox Code Playgroud)
使用的工具:
python 2.7
pymongo versiob 3.3.1
MongoDB shell version: 2.6.10
$ mongod --version
db version v2.6.10
2016-10-31T16:34:59.868+0000 git version: nogitversion
2016-10-31T16:34:59.868+0000 OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016
Run Code Online (Sandbox Code Playgroud)
错误跟踪:
Traceback (most recent call last):
File …Run Code Online (Sandbox Code Playgroud) 我们在 python 脚本中编写了一段代码,用于pymongo连接 mongodb。
username = 'abc'
password = 'xxxxxx'
server = 'dns name of that server'
port = 27017
Run Code Online (Sandbox Code Playgroud)
在程序中,代码如下:
import pymongo
from pymongo import MongoClient
client = MongoClient(url, serverSelectionTimeoutMS=300)
database = client.database_name
data_insert = database.collection_name.insert_one({'id': 1, 'name': xyz})
Run Code Online (Sandbox Code Playgroud)
当我尝试执行这些操作时,它会引发错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/pymongo/cursor.py", line 1114, in next
if len(self.__data) or self._refresh():
File "/usr/local/lib/python2.7/dist-packages/pymongo/cursor.py", line 1036, in _refresh
self.__collation))
File "/usr/local/lib/python2.7/dist-packages/pymongo/cursor.py", line 873, in __send_message
**kwargs)
File "/usr/local/lib/python2.7/dist-packages/pymongo/mongo_client.py", …Run Code Online (Sandbox Code Playgroud)