[英]pymongo - Unable to connect to mongodb running on EC2
I am connecting to a mongodb server on EC2. 我正在连接到EC2上的mongodb服务器。 The mongo collections require authentication to connect.
mongo集合需要身份验证才能连接。
I tried everything but I am getting the following error and can't seem to correct it. 我尝试了一切,但我收到以下错误,似乎无法纠正它。
from pymongo import MongoClient
mongo_username = "username"
mongo_password = "password"
ssh_user = "user"
ssh_address = "ec2-**********.amazonaws.com"
ssh_port = 22
private_key = "path/to/key/mykey.pem"
def connect_to_mongo():
try:
client = MongoClient("mongodb://"+mongo_username+":"+mongo_password+"@" + ssh_address, ssl = True, ssl_keyfile = private_key)
db = client.myDB
#Should 'admin' be there or 'myDB'? 'admin' at least get if(auth) passed, while 'myDB' doesn't
auth = client.admin.authenticate(mongo_username,mongo_password)
if(auth):
print "MongoDB connection successful"
col = db.myCollection.count()
else:
print "MongoDB authentication failure: Please check the username or password"
client.close()
except Exception as e:
print "MongoDB connection failure: Please check the connection details"
print e
if __name__ == "__main__":
connect_to_mongo()
Output : 输出:
MongoDB connection successful
MongoDB connection failure: Please check the connection details
SSL handshake failed: EOF occurred in violation of protocol (_ssl.c:590)
I tried all the options and finally this worked. 我尝试了所有的选项,最后这个工作。
client = MongoClient("mongodb://" + ssh_address+":27017") # No private key passing
auth = client.myDB.authenticate(mongo_username,mongo_password) # Authenticate to myDB and not admin
db = client.myDB
So basically I don't need to pass a private key (which is required when doing ssh over to the EC2) since the port was already opened for all incoming IPs ( I guess this was an important fact that I should have known and posted in the question). 所以基本上我不需要传递一个私钥(这在执行ssh到EC2时是必需的)因为端口已经为所有传入的IP打开了(我想这是一个重要的事实,我应该知道并发布在问题)。
Also I was trying to authenticate via the admin DB
, which I shouldn't have done because I was given access to myDB
only. 此外,我试图通过
admin DB
进行身份验证,我不应该这样做,因为我只能访问myDB
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.