当前位置: 首页 > 知识库问答 >
问题:

如何在Java中连接有用户和密码但没有数据库名的Mongo DB

谢志文
2023-03-14

我正在做Mongo DB Java端开发,想要连接到Mongo DB实例。我从这个链接http://mongodb.github.io/mongo-java-driver/3.0/driver/reference/connecting/authenticating/中阅读了身份验证部分。并且它有以下方法用于认证。

MongoCredential credential = MongoCredential.createCredential(user,
                                                              database,
                                                              password);

上面的代码工作良好,但我需要知道数据库名称首先。如何在不指定数据库的情况下连接到Mongo DB?我想连接到它并返回数据库列表供用户选择。

共有1个答案

刘瀚
2023-03-14

正如这里提到的,MongoDB中的身份验证总是针对源(可以是外部的)进行的,但通常是数据库名。

无论何时创建用户,它都保存在admin数据库中名为system.users的特殊集合中。因此,admindb是在创建第一个用户时隐式创建的。

当您想要列出数据库时,无论是通过shell帮助程序show dbs还是数据库驱动程序,listdatabases命令都是在后台调用的。

很少有内置的xxxAnyDatabase角色--例如readanydatabase角色--其中包括listdatabase特权操作。

如果要创建具有任何xxxAnyDatabase角色的用户,则必须在admin数据库中完成。

所以,长话短说,如果你想列出数据库:

  1. 您的唯一选项是admin数据库作为身份验证源
  2. 用户必须具有适当的角色:readanydatabasereadwriteanydatabasedbadminanydatabase(或超级用户角色,如root)
 类似资料:
  • 问题内容: 我在应用程序中使用MongoDB 3.2。下面的代码演示了数据库初始化逻辑: 这段代码工作正常,现在我想向数据库引入访问级别分离。 步骤如下: 定义用户: 重新创建认证模式MongoDB的3.2服务: 。并运行它。 将连接字符串更改为 其中= 和= 。 使用相同的凭据检查IDEA中已验证的连接,一切正常。 执行我的应用程序并获取异常。 我的问题: 如何使用用户名和密码连接Java中的M

  • 问题内容: 在Redis中可以使用用户名,密码和数据库吗? 这个问题的原因是因为在官方的 pyramid_redis_sessions 文档(http://pyramid-redis- sessions.readthedocs.io/en/latest/gettingstarted.html )中,该参数… …(例如,在Python / Pyramid内部使用)建议使用用户名,密码和db。 但是,

  • 我试图在我的datacontracts中对我的datamembers密码进行哈希/盐析,但当我添加一个新的学生,然后获取该学生集合时,密码字段尚未进行哈希/盐析,它会返回我键入的内容? 有人能帮我修一下吗?

  • 我正在使用com.jcraft.jsch.jsch创建一个SFTP连接。 我的SSH密钥被设置为可以直接SSH到服务器,而不需要用户名或密码。 我的公钥在中的authorized_key文件中 我在本地计算机上的SSH密钥在 此外,我在此目录中还有一个配置文件和一个文件。 为了进行双重检查,我确保中的公钥在远程服务器的文件中。 我正在开发一个创建文件的GUI程序。有了这个文件,我希望能够将它存储在

  • 我不知道如何获得用户名和密码使用配置单元QL。有人能帮我吗??

  • 我正在尝试将PostgreSQL数据库连接到pgadmin。 我所掌握的关于数据库的唯一信息是: postgres:/candidate.company.org/company 用户名:banana 密码:AAABBBCCC 无法将主机名“postgres://candidate.company.org/company”转换为地址:nodename或servname已提供或未知