当前位置: 首页 > 面试题库 >

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

子车才捷
2023-03-14
问题内容

我在应用程序中使用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?我看到了几个html" target="_blank">示例,但是它们使用的方法已过时。
  2. 我应该将用户添加myAppDBadmin表中还是表中?在一些教程中,我看到在admin表中创建用户是个好主意还是值得仅在要使用的数据库中创建用户?

问题答案:

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

例如:

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


 类似资料:
  • 我正在尝试将mysql与移动应用程序结合起来。 我刚刚将mySQLi php扩展添加到我的windowsserver2008中,但是我不知道如何连接php代码:$this- 当我尝试使用用于通过远程桌面连接到服务器的用户名和密码登录时,我收到此反馈:警告:mysqli::mysqli()[mysqli.mysqli]:(28000/1045):用户“admin”@“localhost”的访问被拒绝

  • 我正在做Mongo DB Java端开发,想要连接到Mongo DB实例。我从这个链接http://mongodb.github.io/mongo-java-driver/3.0/driver/reference/connecting/authenticating/中阅读了身份验证部分。并且它有以下方法用于认证。 上面的代码工作良好,但我需要知道数据库名称首先。如何在不指定数据库的情况下连接到Mo

  • 我是jenkins的新手,我正在尝试使用凭据插件在dsl中使用凭据 样板xml 我已将jenkins中的凭据定义为带有密码的用户名。上述加密值保存在anable中。 我的问题是我应该如何在dsl中调用它们 错误: 22:11:16致命:凭据“PROD”的类型为“Username with password”,其中“org”。詹金西。插件。普通凭据。应为StringCredentials

  • 我最近才开始使用firebase工作,我似乎不知道如何让用户用电子邮件、用户名和密码注册,这样以后用户就可以只用用户名和密码登录,我可以用电子邮件和密码登录,但我不知道如何用用户名和密码登录,简单的解释是赞赏的,因为我是新的,谢谢!

  • 我想在Git扩展,Sourcetree或任何其他Git GUI中使用自动推拉,而无需在提示中输入用户名和密码,每次。 那么,如何在Git中保存凭据?

  • 我想问一下,我们是否可以在数据库连接url示例中传递用户名和密码: 我正在使用apache cassandra的cdata驱动程序。如果是,我如何创建一个使用密码的用户,我将通过连接url访问该用户?不,关于税收的文件对我没有帮助。