How can I authenticate any database with given use

2019-07-21 15:25发布

Previously I could use db.authenticate(String username, char[] password) method. With 2.13.0, how can I achieve this?

3条回答
我命由我不由天
2楼-- · 2019-07-21 15:52

Use

import com.mongodb.MongoCredential;

MongoCredential mongoCred = MongoCredential.createMongoCRCredential(String username, String dbName, char[] password);

and create mongoclient using mongocredentials

com.mongodb.MongoClient.MongoClient(List seeds, List credentialsList, MongoClientOptions options)

查看更多
欢心
3楼-- · 2019-07-21 16:05

We can have user-password based authentication for databases, in that case we need to provide authorization credentials like below for new version.

MongoCredential journaldevAuth = MongoCredential.createPlainCredential("pankaj", "journaldev", "pankaj123".toCharArray());
    MongoCredential testAuth = MongoCredential.createPlainCredential("pankaj", "test", "pankaj123".toCharArray());
    List<MongoCredential> auths = new ArrayList<MongoCredential>();
    auths.add(journaldevAuth);
    auths.add(testAuth);

    ServerAddress serverAddress = new ServerAddress("localhost", 27017);
    MongoClient mongo = new MongoClient(serverAddress, auths);

If you are using older versions, you need to provide authentication details after getting the DB object like below

MongoClient mongo = new MongoClient("localhost", 27017);
DB db = mongo.getDB("journaldev");
boolean auth = db.authenticate("pankaj", "pankaj123".toCharArray());
查看更多
神经病院院长
4楼-- · 2019-07-21 16:06

There is no replacement for db.authenticate(). The driver will use the credentials provided and make sure the connections are authenticated as they are created.

Based on this mongodb-user discussion the Java Driver team is open to discussions on what the real need for the db.authenticate(...) method.

查看更多
登录 后发表回答