尝试向MongoDB进行身份验证时出错13

时间:2016-06-24 19:49:42

标签: mongodb authentication jdbc

我试图通过JDBC连接到MongoDB。连接字符串如下所示,

mongodb://localhost:27017/games?authSource=admin

但是我得到了以下内容:

{ "ok" : 0.0, "errmsg" : "not authorized on admin to execute command { listDatabases: 1 }", "code" : 13 }

我的目的不是列出所有数据库,但用户必须对管理数据库进行身份验证,并且可以在游戏数据库上进行读/写。我在这里犯了什么错误?

我希望用户X对管理员数据库进行身份验证,但只读取游戏数据库,因此不确定它为什么要求listDatabase权限。

1 个答案:

答案 0 :(得分:0)

首先,我假设你使用的是MongoDB Java Driver,它实际上不是JDBC。

分享一下会很有帮助:

  1. 您是如何创建用户的
  2. 您正在执行的Java代码
  3. 您正在使用的mongo-java-driver和MongoDB的版本
  4. 但根据错误,您似乎已成功进行身份验证。我强烈怀疑您是直接致电listDatabases()还是listDatabaseNames()

    另一件看起来不太正确的事实是你在MongoClientURI中指定了authSource=admin。但是这个问题应该给你一个Autentication Failed错误。您应该将authSource从连接字符串中删除,或者指定authSource=games

    根据您的描述,当您created your user时,您应该在games数据库中创建用户(用户实际上将存储在管理数据库中,但您将对游戏进行身份验证数据库)。

相关问题