Подключиться к удаленному серверу mongodb с помощью java

Я пытаюсь подключиться к удаленному экземпляру mongodb, но он продолжает выдавать ошибку.

Java-код:

Mongo mongo = new Mongo("172.234.52.24");
DB db = mongo.getDB("myDB");
collection = db.getCollection("myCollection");

Но я продолжаю получать следующее исключение:

java.io.IOException: couldn't connect to [/172.234.52.24:27017] bc:java.net.ConnectException: Connection refused

Есть ли что-то еще, что я должен сделать? Установить имя пользователя/пароль, когда я пытаюсь получить доступ к базе данных или изменить некоторые разрешения на стороне монго? Это просто обычная установка mongo на сервере ubuntu, без дополнительной конфигурации или разрешений.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ: mongo 172.234.52.24:8888 тоже не работает, пишет исключение: не удалось подключиться. Я могу пропинговать другой хост и знаю, что на нем работает монго.

Любые идеи? Спасибо!


person exxodus7    schedule 30.05.2013    source источник
comment
Порт открыт? Почему вы пытались подключиться к 172.234.52.24:8888?? 8888 не является портом по умолчанию. docs.mongodb.org/manual/tutorial/   -  person WiredPrairie    schedule 30.05.2013
comment
Монго 172.234.52.24 работает с вашей стороны? Работает ли mongo localhost, если вы подключаетесь к серверу по ssh?   -  person A. Jesse Jiryu Davis    schedule 30.05.2013


Ответы (5)


Я понял... у вас были отличные предложения, но проблема была более фундаментальной.

В моем файле конфигурации mongo на удаленном сервере была переменная bind_ip, установленная на локальный ip. Как только я это прокомментировал, все заработало правильно.

Однако всем большое спасибо!

person exxodus7    schedule 30.05.2013
comment
Эй, Exxodus7! не могли бы вы поделиться подробностями о том, как вы решили проблему? - person Chiran; 05.05.2014
comment
@Chiran откройте файл конфигурации mongod в /etc/mongod.conf, затем закомментируйте строку bind_ip=127.0.0.1 - person slownage; 10.05.2014
comment
спасибо @slonage, это действительно работает, просто нужно перезапустить службу mongod после редактирования файла. - person sachingupta; 26.09.2014

Убедитесь, что вы добавили правильную зависимость maven в свой pom.xml 1. spring-data-mongodb (1.5.2.RELEASE) 2. mongo-java-driver (2.13.0)

Просто обновите свои учетные данные в следующем коде Java, и он будет работать для вас. "$external" в приведенном ниже коде означает, что вы пытаетесь подключиться к базе данных, которая находится на компьютере Linux в удаленном месте.

Ниже код работает в автономной программе Java.

String database = "TestDev";
    String username = "[email protected]";
    String pass = "XXXXX";
    char[] password = pass.toCharArray();

    try {

        List<ServerAddress> serverAddresses = new ArrayList<ServerAddress>();
        ServerAddress address = new ServerAddress("hostname", portnumber);
        serverAddresses.add(address);
        List<MongoCredential> credentials = new ArrayList<MongoCredential>();
        MongoCredential credential = MongoCredential.createPlainCredential(username, "$external", password);
        credentials.add(credential);
        MongoClient mongoClient1 = new MongoClient(serverAddresses, credentials);
        DB db = mongoClient1.getDB(database);
        System.out.println(db.getCollectionNames());


        System.out.println("Done");
    } catch (UnknownHostException e) {
        e.printStackTrace();
    }
person Krishna Kumar Chourasiya    schedule 13.11.2015

Подключитесь к удаленной базе данных MongoDB с помощью веб-приложения Java. Код ниже наверняка поможет вам.

Прежде чем использовать приведенный ниже код, добавьте в него файл свойств с учетными данными и всеми остальными необходимыми данными. Прочитайте этот файл свойств в spring-config.xml. Вы можете использовать приведенный ниже код для чтения файла свойств -

<context:property-placeholder location='classpath:/config/configTest.properties'/>

Открытый класс @Configuration MongoConfiguration расширяет AbstractMongoConfiguration{

@Value("${mongodb.dbname}")
private String  dbName;

@Value("${mongodb.host}")
private String  host;

@Value("${mongodb.port}")
private Integer port;

@Value("${mongodb.username}")
private String  userName;

@Value("${mongodb.password}")
private String  password;

@Value("${mongodb.authenticationdatabase}")
private String  authenticationDatabase;

@Override
protected String getDatabaseName()  {
    return this.dbName;
}

@Override
public MongoClient mongo() throws Exception {
    List<ServerAddress> serverAddresses = new ArrayList<ServerAddress>();
    ServerAddress address = new ServerAddress(host, port);
    serverAddresses.add(address);
    List<MongoCredential> credentials = new ArrayList<MongoCredential>();
    MongoCredential credential = MongoCredential.createPlainCredential(userName, authenticationDatabase, password.toCharArray());
    credentials.add(credential);
    return new MongoClient(serverAddresses, credentials);
}

@Override
@Bean
public SimpleMongoDbFactory mongoDbFactory() throws Exception {
    return new SimpleMongoDbFactory(mongo(), getDatabaseName());
}

@Override
@Bean
public MongoTemplate mongoTemplate() throws Exception {

    final MongoTemplate mongoTemplate = new MongoTemplate(mongo(), getDatabaseName());
    mongoTemplate.setWriteConcern(WriteConcern.SAFE);
    return mongoTemplate;
}
person Krishna Kumar Chourasiya    schedule 13.11.2015

Для меня работает следующее:

private static final String DB_NAME = "yourDbName";

MongoClient mongo = new MongoClient();
DB db = mongo.getDB(DB_NAME);
collection = db.getCollection("myCollection");

Имя базы данных используется драйвером; строка подключения (172.234.52.24:27017) используется клиентом при просмотре данных (MongoVue или MongoExplorer). Также придерживайтесь порта 27017.

Изменить: я использую MongoDriver для подключения Java.

person Mike Gostintsev    schedule 30.05.2013

В случае, если рекомендуемый ответ не сработал; попробуйте установить bindIp: 0.0.0.0 в файле mongod.conf, расположенном в /etc/mongod.conf

Редактировать: по-видимому, поздний пост без другого ответа, решающего мою проблему, и однострочный ответ недостаточен.

person NiharGht    schedule 05.06.2019