JAVA com.mongodb.MongoQueryException: запрос не выполнен с кодом ошибки 13 и сообщением об ошибке «команда find требует аутентификации» - PullRequest
0 голосов
/ 25 февраля 2019

com.mongodb.MongoQueryException: запрос не выполнен с кодом ошибки 13 и сообщением об ошибке «команда find требует аутентификации»

Как создать клиент mongo с использованием пароля в java.

Я знаю, что был такой метод:

public MongoClient(final ServerAddress addr, final List<MongoCredential> credentialsList);

Но он показан как устаревший, есть еще один метод, который требует MongoClientOptions:

public MongoClient(final ServerAddress addr, final MongoCredential credential, final MongoClientOptions options)

Но у меня нетлюбые варианты для отправки.Итак, есть ли способ создать клиент Монго в Java с помощью пароля?

1 Ответ

0 голосов
/ 25 февраля 2019

Для выполнения команды find вам необходимо сначала пройти аутентификацию с помощью mongo.Пример того, как вы можете выполнять аутентификацию:

Mongo mongo = new Mongo("localhost", 27017);
DB db = mongo.getDB("testdb");

boolean auth = db.authenticate("testdb", "password".toCharArray());
if (auth) {

    DBCollection table = db.getCollection("user");

    BasicDBObject document = new BasicDBObject();
    document.put("name", "mkyong");
    table.insert(document);

    System.out.println("Login is successful!");
} else {
    System.out.println("Login is failed!");
}

Это должно работать для вас.

Вы можете проверить пример кода в этой статье: https://www.mkyong.com/mongodb/java-authentication-access-to-mongodb/

При использовании mongo-java-driver было бы целесообразно следующее: - обратите внимание, что этот метод больше не используется как устаревший,но для параметра writeconcern установлено значение Journaled (что рекомендуется)

String username = "test";
String database = "something";
String password = "secret";

MongoCredential mongoCredential = MongoCredential.createCredential(username, database, password.toCharArray());
MongoClientOptions options = MongoClientOptions.builder()
.writeConcern(WriteConcern.JOURNALED).build();

MongoClient mongoClient = new MongoClient(new ServerAddress("host1", 27017), Arrays.asList(mongoCredential), options);
...