我可以在db服务器上本地使用mongo客户端正常连接和验证。我不能远程。我可以从远程主机连接,但db.auth总是失败并且使用在本地工作的正确凭据,并且还使用pymongo客户端远程工作。所以这有效:
> python
> import pymongo, config
> pymong.MongoClient(host=config.database_host)['live'].collection_names()
但事实并非如此!
> mongo db.example.com/live
> db.auth('live', 'secret')
0
>
然而,从db服务器本地,完全相同的东西确实有效,所以我确定我使用正确的语法和凭据:-(。这可能会发生什么?在服务器日志中,我看到:
2016-10-09T04:44:21.368+0000 I ACCESS [conn22763] authenticate db: live { authenticate: 1, nonce: "xxx", user: "live", key: "xxx" }
2016-10-09T04:44:21.368+0000 I ACCESS [conn22763] Failed to authenticate live@live with mechanism MONGODB-CR: AuthenticationFailed: MONGODB-CR credentials missing in the user document
也许这是客户端版本问题?
答案 0 :(得分:0)
我已经在原帖中回答了这个问题。这是mongo客户端和服务器之间的简单主要版本号不匹配。这花了我很多时间才弄明白,因为错误是完全错误的,更不用说甚至没有从我尝试的客户端报告,所以不得不将其从服务器日志中挖掘出来。