繁体   English   中英

JAVA com.mongodb.MongoQueryException:查询失败,错误代码为13,错误消息“命令查找需要身份验证”

[英]JAVA com.mongodb.MongoQueryException: Query failed with error code 13 and error message 'command find requires authentication'

com.mongodb.MongoQueryException:查询失败,错误代码为13,错误消息“命令查找需要身份验证”

如何使用Java中的密码创建mongo客户端。

我知道有这样的方法:

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

但是它显示为已弃用,还有另一种方法需要MongoClientOptions:

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

但是我没有任何发送选择。 那么,有什么办法可以使用密码在Java中创建mongo客户端?

为了执行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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM