Impossible de connecter MongoDB sur une instance Amazon EC2 à l'aide de java


Je développe une application Androidqui utilise le MongoDBpour le stockage de données, actuellement j'utilise Mongolabsandbox pour stocker les données. Je pense à déplacer la base de données vers l'instance Amazon Ec2et je l'ai configuré via le service MMS.

J'ai créé un utilisateur de base de données et je peux me connecter à la base de données via puttyet effectuer des opérations CURD. En ce moment j'explore comment me connecter à l'Ec2 Instance du pilote JAVA MongoDB.

J'utilise ce code en ce moment pour me connecter à la base de données

MongoClientURI uri = new MongoClientURI("mongodb://" + myUserName + ":" + myPassword + "@" + DB + "/" + DB_NAME + "?authMechanism=MONGODB-CR");
        MongoClient mongoClient = new MongoClient(uri);
        MongoDatabase blogDatabase = mongoClient.getDatabase(DB_NAME);
        MongoCollection<Document> usersCollection = blogDatabase.getCollection("users");

Mais je ne peux pas connecter la base de données. Cela me donne une erreur

Aug 27, 2015 9:12:14 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: Cluster created with settings {hosts=[5fdef03a@host:port], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
Aug 27, 2015 9:12:14 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: Exception in monitor thread while connecting to server 5fdef03a@host:port
com.mongodb.MongoSocketException: 5fdef03a@host
    at com.mongodb.ServerAddress.getSocketAddress(ServerAddress.java:188)
    at com.mongodb.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:37)
    at com.mongodb.connection.SocketStream.open(SocketStream.java:53)
    at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:96)
    at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:127)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.net.UnknownHostException: 5fdef03a@host
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
    at java.net.InetAddress$2.lookupAllHostAddr(Unknown Source)
    at java.net.InetAddress.getAddressesFromNameService(Unknown Source)
    at java.net.InetAddress.getAllByName0(Unknown Source)
    at java.net.InetAddress.getAllByName(Unknown Source)
    at java.net.InetAddress.getAllByName(Unknown Source)
    at java.net.InetAddress.getByName(Unknown Source)
    at com.mongodb.ServerAddress.getSocketAddress(ServerAddress.java:186)
    ... 5 more

Aug 27, 2015 9:12:17 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: No server chosen by PrimaryServerSelector from cluster description ClusterDescription{type=UNKNOWN, connectionMode=SINGLE, all=[ServerDescription{address=5fdef03a@host:port, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketException: 5fdef03a@host}, caused by {java.net.UnknownHostException: 5fdef03a@host}}]}. Waiting for 30000 ms before timing out

Remarque : Je n'ai pas divulgué les valeurs de l'hôte et du port dans l'erreur.

Quelqu'un peut-il m'aider à comprendre quoi faire même si toutes les informations d'identification sont correctes. Dans la plupart des articles que j'ai trouvés, ils ont demandé de créer une API REST pour se connecter, mais je pense qu'il devrait y en avoir d'autres moyen de se connecter avec le pilote JAVA MongoDB lui-même. Sinon, existe-t-il un autre moyen d'accéder à la base de données.

Author: S A R, 2015-08-27

1 answers

Vérifiez ce qui suit, cela pourrait vous aider

1) Le port via lequel vous accédez à mongodb peut être bloqué par la sécurité de votre réseau.

2) Le serveur Mongo ne fonctionne pas sur l'hôte du serveur SSH

3) Les privilèges utilisateur à travers lesquels vous essayez de vous connecter ne sont pas appropriés

4) Le fichier PEM n'est pas valide

Liens Utiles:

Comment se connecter à MongoDB sur EC2 en utilisant Java pilote

Http://docs.mongodb.org/manual/faq/diagnostics/#Troubleshooting-Socketerrorsinshardedclustersandreplicasets

 1
Author: Clement Amarnath, 2017-05-23 10:26:34