Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyMongo Mongodb SSL错误或身份验证错误_Python_Python 3.x_Mongodb_Ssl - Fatal编程技术网

Python PyMongo Mongodb SSL错误或身份验证错误

Python PyMongo Mongodb SSL错误或身份验证错误,python,python-3.x,mongodb,ssl,Python,Python 3.x,Mongodb,Ssl,我正在尝试使用我创建的mongo数据库,但遇到一个无法消除的错误。 这是我的代码: 如果我只是打印收藏,效果很好 from pymongo import MongoClient import ssl client = MongoClient("mongodb+srv://HugoAdmin:<XXXXXXXXXXX>@personalsite-3gjka.mongodb.net/test?retryWrites=true&w=majority") db = client.t

我正在尝试使用我创建的mongo数据库,但遇到一个无法消除的错误。 这是我的代码: 如果我只是打印收藏,效果很好

from pymongo import MongoClient
import ssl

client = MongoClient("mongodb+srv://HugoAdmin:<XXXXXXXXXXX>@personalsite-3gjka.mongodb.net/test?retryWrites=true&w=majority")
db = client.test
db = client['Site']
collection = db['BlogPosts']
print(collection)
post = {"_id": 0, "author": "Hugo Joncour", "date": "25/03/2020"}
#collection.insert_one(post)
但如果我想插入帖子:

from pymongo import MongoClient
import ssl

client = MongoClient("mongodb+srv://HugoAdmin:<yvctrd6F7GUYBVYT>@personalsite-3gjka.mongodb.net/test?retryWrites=true&w=majority")
db = client.test
db = client['Site']
collection = db['BlogPosts']
#print(collection)
post = {"_id": 0, "author": "Hugo Joncour", "date": "25/03/2020"}
collection.insert_one(post)
从pymongo导入MongoClient
导入ssl
客户端=MongoClient(“mongodb+srv://HugoAdmin:@personalsite-3gjka.mongodb.net/test?retryWrites=true&w=多数“)
db=client.test
db=客户端['Site']
collection=db['BlogPosts']
#印刷品(收藏)
post={U id:0,“作者”:“雨果·琼库尔”,“日期”:“2020年3月25日”}
集合。插入一个(post)
我得到:

➜  webportfolio git:(master) ✗ Python3.6 mongo.py
Collection(Database(MongoClient(host=['personalsite-shard-00-01-3gjka.mongodb.net:27017', 'personalsite-shard-00-00-3gjka.mongodb.net:27017', 'personalsite-shard-00-02-3gjka.mongodb.net:27017'], document_class=dict, tz_aware=False, connect=True, retrywrites=True, w='majority', authsource='admin', replicaset='PersonalSite-shard-0', ssl=True), 'Site'), 'BlogPosts')
➜  webportfolio git:(master) ✗ Python3.6 mongo.py
Traceback (most recent call last):
  File "mongo.py", line 15, in <module>
    collection.insert_one(post)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/collection.py", line 698, in insert_one
    session=session),
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/collection.py", line 612, in _insert
    bypass_doc_val, session)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/collection.py", line 600, in _insert_one
    acknowledged, _insert_command, session)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/mongo_client.py", line 1490, in _retryable_write
    with self._tmp_session(session) as s:
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/contextlib.py", line 81, in __enter__
    return next(self.gen)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/mongo_client.py", line 1823, in _tmp_session
    s = self._ensure_session(session)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/mongo_client.py", line 1810, in _ensure_session
    return self.__start_session(True, causal_consistency=False)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/mongo_client.py", line 1763, in __start_session
    server_session = self._get_server_session()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/mongo_client.py", line 1796, in _get_server_session
    return self._topology.get_server_session()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/topology.py", line 490, in get_server_session
    None)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/topology.py", line 209, in _select_servers_loop
    self._error_message(selector))
pymongo.errors.ServerSelectionTimeoutError: SSL handshake failed: personalsite-shard-00-00-3gjka.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:841),SSL handshake failed: personalsite-shard-00-02-3gjka.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:841),SSL handshake failed: personalsite-shard-00-01-3gjka.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:841)
➜  WebPortfolioGit:(硕士)✗ Python3.6 mongo.py
回溯(最近一次呼叫最后一次):
文件“mongo.py”,第15行,在
集合。插入一个(post)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/pymongo/collection.py”,第698行,插入第1行
会话=会话),
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/pymongo/collection.py”,第612行,插入
绕过(文档、会话)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/collection.py”,第600行,插入第1行
已确认,_插入_命令,会话)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/mongo\u-client.py”,第1490行,可检索的
将self.\u tmp\u会话(session)作为s:
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/contextlib.py”,第81行,输入__
返回下一个(self.gen)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/pymongo/mongo_client.py”,第1823行,在tmp_会话中
s=自我确保会话(会话)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/pymongo/mongo_client.py”,第1810行,在会话中
返回self.\u启动\u会话(True,因果一致性=False)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/pymongo/mongo\u client.py”,第1763行,在启动会话中
server\u session=self.\u get\u server\u session()
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/pymongo/mongo\u client.py”,第1796行,在“获取服务器”会话中
返回self.\u拓扑。获取\u服务器\u会话()
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/pymongo/topology.py”,第490行,在get_server_会话中
(无)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/pymongo/topology.py”,第209行,在“选择服务器”循环中
自身错误消息(选择器))
pymongo.errors.ServerSelectionTimeoutError:SSL握手失败:personalsite-shard-00-00-3gjka.mongodb.net:27017:[SSL:CERTIFICATE\u VERIFY\u failed]证书验证失败(\u SSL.c:841),SSL握手失败:personalsite-shard-00-02-3gjka.mongodb.net:27017:[SSL:CERTIFICATE\u VERIFY\u failed]证书验证失败(\u SSL.c:841),SSL握手失败:personalsite-shard-00-01-3gjka.mongodb.net:27017:[SSL:CERTIFICATE\u VERIFY\u failed]CERTIFICATE VERIFY失败(\u SSL.c:841)
我试过这个 通过在MongoClient()中添加“ssl=True,ssl\u cert\u reqs=ssl.cert\u NONE”,我得到:

➜  webportfolio git:(master) ✗ Python3.6 mongo.py
Traceback (most recent call last):
  File "mongo.py", line 15, in <module>
    collection.insert_one(post)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/collection.py", line 698, in insert_one
    session=session),
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/collection.py", line 612, in _insert
    bypass_doc_val, session)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/collection.py", line 600, in _insert_one
    acknowledged, _insert_command, session)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/mongo_client.py", line 1491, in _retryable_write
    return self._retry_with_session(retryable, func, s, None)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/mongo_client.py", line 1377, in _retry_with_session
    with self._get_socket(server, session) as sock_info:
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/contextlib.py", line 81, in __enter__
    return next(self.gen)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/mongo_client.py", line 1222, in _get_socket
    self.__all_credentials, checkout=exhaust) as sock_info:
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/contextlib.py", line 81, in __enter__
    return next(self.gen)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/pool.py", line 1138, in get_socket
    sock_info.check_auth(all_credentials)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/pool.py", line 712, in check_auth
    auth.authenticate(credentials, self)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/auth.py", line 564, in authenticate
    auth_func(credentials, sock_info)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/auth.py", line 539, in _authenticate_default
    return _authenticate_scram(credentials, sock_info, 'SCRAM-SHA-1')
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/auth.py", line 301, in _authenticate_scram
    res = sock_info.command(source, cmd)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/pool.py", line 613, in command
    user_fields=user_fields)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/network.py", line 167, in command
    parse_write_concern_error=parse_write_concern_error)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/helpers.py", line 159, in _check_command_response
    raise OperationFailure(msg % errmsg, code, response)
pymongo.errors.OperationFailure: bad auth Authentication failed.
➜  WebPortfolioGit:(硕士)✗ Python3.6 mongo.py
回溯(最近一次呼叫最后一次):
文件“mongo.py”,第15行,在
集合。插入一个(post)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/pymongo/collection.py”,第698行,插入第1行
会话=会话),
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/pymongo/collection.py”,第612行,插入
绕过(文档、会话)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/collection.py”,第600行,插入第1行
已确认,_插入_命令,会话)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/mongo\u-client.py”,第1491行,可检索的
返回self.\u使用会话重试(可重试、函数、s、无)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/mongo\u-client.py”,第1377行,在“使用会话重试”中
使用self.\u获取\u套接字(服务器、会话)作为sock\u信息:
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/contextlib.py”,第81行,输入__
返回下一个(self.gen)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pymongo/mongo\u-client.py”,第1222行,位于“获取”套接字中
self.\uu所有\u凭证,签出=排气)作为sock\u信息:
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/contextlib.py”,第81行,输入__
返回下一个(self.gen)
get_socket中的文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/pymongo/pool.py”,第1138行
sock\u info.检查\u auth(所有\u凭据)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/pymongo/pool.py”,第712行,在check_auth中
身份验证(凭证,自我)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/pymongo/auth.py”,第564行,在“身份验证”中
验证函数(凭证、存储库信息)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/pymongo/auth.py”,第539行,默认为
返回(凭证,存储信息"scram-SHA-1")
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/pymongo/auth.py”,第301行,在“身份验证”中
res=sock_info.命令(源,cmd)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/pymongo/pool.py”,第613行,在命令中
用户\字段=用户\字段)
命令行第167行的文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/pymongo/network.py”
parse\u write\u concern\u error=parse_