【问题标题】:VOMongoRepository fails to connect to MongoDB replicaset with user credentials (Pharo/Voyage)VOMongoRepository 无法使用用户凭据连接到 MongoDB 副本集 (Pharo/Voyage)
【发布时间】:2018-08-30 12:56:00
【问题描述】:

我正在尝试将根对象(MyDocument)保存到启用身份验证的 mongoDB 和由 3 个节点组成的 ReplicaSet(插入 mongoUrls)

通过此调用: (VOMongoRepository mongoUrls: {'127.0.0.1:27017' . '127.0.0.1:27018' . '127.0.0.1:27019'} database: 'myDB' username: 'myUser' password: 'myPass') enableReplication

我收到一个 VOMongoConnectionError 没有任何更深入的信息。

尝试与此相同:

VOMongoRepository mongoUrls: {'myUser:myPass@127.0.0.1:27017/?replicaSet=myRepl' } database: 'myDB'

然后我收到一个 VOMongoError“未授权查询 myDB.MyDocument”

使用 mongo 客户端和 Compass 双重检查凭据,还有读/写权限(实际上角色是 dbOwner)。

有趣的是,我的 testDocumentLifeCycle 能够创建对象并发送要保存的消息,该消息返回时不会发出错误信号,尽管它不会在 MongoDB 中创建文档。但是 selectOne: 然后返回 VOMongoError:

| doc | MyDocument new identity: 'me@there.com'; save. user := MyDocument selectOne: [ :each | each identity = 'me@there.com'].

顺便提一下:上面对 MyDocument 类的测试确实适用于没有启用身份验证的独立 mongod。唯一改变的是存储库。

那我做错了什么?

【问题讨论】:

  • 您究竟是如何“使用 mongo 客户端和 Compass 双重检查凭据,以及读/写权限(实际上角色是 dbOwner)。”?你能用这些信息更新问题吗?
  • 我检查了凭据是否有效。为此,我使用了 mongo 和 compass。
  • 好的。例如,我的猜测是编码有问题。你检查过吗? wireshark 实际发送的是什么?

标签: mongodb smalltalk pharo


【解决方案1】:

其实 VoyageMongo 的 replicaSet 部分有一个 bug。它没有使用提供的凭据。它已发布在https://github.com/pharo-nosql/voyage/issues/104

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-25
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    相关资源
    最近更新 更多