如何使用用户名和密码连接Java中的MongoDB 3.2?

我在应用程序中使用MongoDB 3.2。下面的代码演示了数据库初始化逻辑:

    private void dbInit(String dbName) {

String mongoClientURI = "mongodb://" + DB_URL + ":" + DB_PORT;

MongoClientURI connectionString = new MongoClientURI(mongoClientURI);

// enable SSL connection

MongoClientOptions.builder().sslEnabled(true).build();

if (this.mongoClient == null) {

this.mongoClient = new MongoClient(connectionString);

}

// create database if doesn't exist

this.mongoClient.getDatabase(dbName);

}

这段代码工作正常,现在我想向数据库引入访问级别分离。

步骤如下:

  1. 定义用户:

        use myAppDB

db.createUser(

{

"user": "myAdmin",

"pwd": "123090d1487dd4ab7",

roles: [ "readWrite", "dbAdmin" ]

}

)

use myAppDB

db.createUser(

{

"user": "guest",

"pwd": "guest",

roles: [ "read" ]

}

)

  1. 重新创建认证模式MongoDB的3.2服务: "C:\Program Files\MongoDB\Server\3.2\bin\mongod.exe" --install --dbpath=C:\data\db --logpath=C:\data\log\log.txt --auth --service。并运行它。

  2. mongoClientURI连接字符串更改为

    String mongoClientURI = "mongodb://" + DB_SRV_USR + ":" + DB_SRV_PWD + "@" + DB_URL + ":" + DB_PORT;

其中DB_SRV_USR= myAdminDB_SRV_PWD= 123090d1487dd4ab7

  1. Mongo Explorer使用相同的凭据检查IDEA中已验证的连接,一切正常。

  2. 执行我的应用程序并获取异常Authentication failed

我的问题:

  1. 如何使用用户名和密码连接Java中的MongoDB 3.2?我看到了几个示例,但是它们使用的方法已过时。
  2. 我应该将用户添加myAppDBadmin表中还是表中?在一些教程中,我看到在admin表中创建用户是个好主意还是值得仅在要使用的数据库中创建用户?

回答:

正如MarkusWMahlberg]正确指出的那样,有必要在连接字符串中注明数据库名称。

例如:

String mongoClientURI = "mongodb://" + DB_SRV_USR + ":" + DB_SRV_PWD + "@" + DB_URL + ":" + DB_PORT + "/" + dbName;

以上是 如何使用用户名和密码连接Java中的MongoDB 3.2? 的全部内容, 来源链接: utcz.com/qa/414440.html

回到顶部