Как подключиться к удаленному MongoDB с помощью монго-разъема?

Как я могу подключиться к кластеру MongoDB в Mongo Atlas, используя mongo-connector?

Я попытался подключиться к моему кластеру с помощью следующих команд:

Первая попытка

sudo mongo-connector -m "mongodb://g******:*********@rest-api-data-shard-00-00-xemv3.mongodb.net:27017,rest-api-data-shard-00-01-xemv3.mongodb.net:27017,rest-api-data-shard-00-02-xemv3.mongodb.net:27017/admin?ssl =true&replicaSet=rest-api-data-shard-0&authSource=admin" -a g****** -p "***********" -t http://localhost:9200 -d elastic2_doc_manager

Ответ:

Logging to mongo-connector.log. Exception in thread Thread-1: Traceback (most recent call last): File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 801, in __bootstrap_inner self.run() File "/usr/local/lib/python2.7/site-packages/mongo_connector/util.py", line 90, in wrapped func(*args, **kwargs) File "/usr/local/lib/python2.7/site-packages/mongo_connector/connector.py", line 263, in run main_conn['admin'].authenticate(self.auth_username, self.auth_key) File "/usr/local/lib/python2.7/site-packages/pymongo/database.py", line 1018, in authenticate connect=True) File "/usr/local/lib/python2.7/site-packages/pymongo/mongo_client.py", line 434, in _cache_credentials raise OperationFailure('Another user is already authenticated ' OperationFailure: Another user is already authenticated to this database. You must logout first.

Вторая попытка:

sudo mongo-connector -m "mongodb://rest-api-data-shard-00-00-xemv3.mongodb.net:27017,rest-api-data-shard-00-01-xemv3.mongodb.net:27017,rest-api-data-shard-00-02-xemv3.mongodb.net:27017/admin?replicaSet=rest-api-data-shard-0" -a g********* -p "********" -t http://localhost:9200 -d elastic2_doc_manager

Ответ:

Logging to mongo-connector.log. Exception in thread Thread-1: Traceback (most recent call last): File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 801, in __bootstrap_inner self.run() File "/usr/local/lib/python2.7/site-packages/mongo_connector/util.py", line 90, in wrapped func(*args, **kwargs) File "/usr/local/lib/python2.7/site-packages/mongo_connector/connector.py", line 263, in run main_conn['admin'].authenticate(self.auth_username, self.auth_key) File "/usr/local/lib/python2.7/site-packages/pymongo/database.py", line 1018, in authenticate connect=True) File "/usr/local/lib/python2.7/site-packages/pymongo/mongo_client.py", line 439, in _cache_credentials writable_preferred_server_selector) File "/usr/local/lib/python2.7/site-packages/pymongo/topology.py", line 210, in select_server address)) File "/usr/local/lib/python2.7/site-packages/pymongo/topology.py", line 186, in select_servers self._error_message(selector)) ServerSelectionTimeoutError: rest-api-data-shard-00-02-xemv3.mongodb.net:27017: [Errno 54] Connection reset by peer,rest-api-data-shard-00-00-xemv3.mongodb.net:27017: [Errno 54] Connection reset by peer,rest-api-data-shard-00-01-xemv3.mongodb.net:27017: [Errno 54] Connection reset by peer

2 ответа

Ответил на вопрос о github. Решение:

В первой попытке проблема заключается в том, что вы указали имя пользователя и пароль для MongoDB дважды. Удалите -a g****** -p "***********", и он должен работать нормально. Если вам нужно пройти аутентификацию в Elasticsearch, вам нужно использовать конфигурационный файл mongo-connector и установить правильные параметры аутентификации для клиента Python Elasticsearch, например:

{ "mainAddress": "mongodb://user:pass@mongodb:27017,mongodb:27018,mongodb:27019/admin?ssl=true&replicaSet=name&authSource=admin", "verbosity": 1, "docManagers": [ { "docManager": "elastic2_doc_manager", "targetURL": "http://localhost:9200", "args": { "clientOptions": { "http_auth": ["user", "secret"], "use_ssl": true } } } ] }

Во второй попытке похоже, что проблема в том, что вы забыли добавить ssl=true в строку подключения MongoDB. Вот почему вы получаете сброс соединения из-за ошибок.

Это исключение означает, что вы пытаетесь аутентифицировать двух отдельных пользователей в одной базе данных. Водитель запрещает это, чтобы избежать повышения привилегий. Вы можете выйти из системы первым пользователем, вызвав Database.logout(). Тогда вы сможете успешно аутентифицировать второго пользователя.

https://api.mongodb.org/python/current/api/pymongo/database.html

Другие вопросы по тегам