我试图通过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权限。
答案 0 :(得分:0)
首先,我假设你使用的是MongoDB Java Driver,它实际上不是JDBC。
分享一下会很有帮助:
但根据错误,您似乎已成功进行身份验证。我强烈怀疑您是直接致电listDatabases()
还是listDatabaseNames()
。
另一件看起来不太正确的事实是你在MongoClientURI中指定了authSource=admin
。但是这个问题应该给你一个Autentication Failed错误。您应该将authSource从连接字符串中删除,或者指定authSource=games
。
根据您的描述,当您created your user时,您应该在games
数据库中创建用户(用户实际上将存储在管理数据库中,但您将对游戏进行身份验证数据库)。