Rails Mongoid无法验证 - 失败,错误13:“未授权查询my_db.my_collection”

时间:2015-04-26 09:22:08

标签: ruby-on-rails mongodb mongoid moped nosql

据说

This issue解决了最新版本的摩托车,但我仍然遇到了问题。 我有一个带有Mongoid的rails 4.2应用程序,为具有 readWrite dbOwner 角色的MongoDB DB创建了一个用户,并设置了 auth = true mong.conf 文件中 我可以使用Mongo shell或使用Mongo驱动程序的简单Java应用程序使用该用户凭据对DB执行任何操作 但是,在尝试使用Mongoid进行身份验证时,始终会收到此错误:

  

失败,错误13:“未授权查询my_db.my_collection”

以下是我的mongoid.yml文件的相关部分:

production:
  # Configure available database sessions. (required)
  sessions:
    # Defines the default session. (required)
    default:
      # Defines the name of the default database that Mongoid can connect to.
      # (required).
      database: my_db
      hosts:
              - localhost:27017
      username: my_username
      password: my_password

我还尝试用服务器的远程地址替换主机并远程访问它(这与禁用的身份验证选项一起使用)没有成功。 对于它的价值,我可以通过调试mpped / node.rb文件看到凭证,在 ensure_connected 方法中我看到 @credentials 变量包含我的用户名和密码 我在这里错过了什么? 谢谢!

1 个答案:

答案 0 :(得分:10)

也遇到了这个问题。我愿意猜你在运行MongoDB 3 +?

坏消息: Moped 2(今天由mongoid使用)不支持MongoDB 3+的身份验证。

  

Moped也缺乏支持服务器版本3.0的许多基本功能。例如,它不支持使用MongoDB 3.0或最新版本的有线协议进行身份验证(其中包括listCollections,listIndexes等命令以及执行批量写入的功能)。将Mongoid与Ruby驱动程序2.0集成将为ODM带来许多此功能和前向兼容性。   Source

好消息: 目前正在进行重大改写(Mongoid 5),将由MongoDB团队提供支持。你今天可以从大师那里拿出来测试一下......但我不建议生产,因为它非常不稳定。

解决方案选项

  1. 从MongoDB和任何公共DNS中删除用户/通过身份验证到数据库。使用带私钥的SSH并连接到私人地址。
  2. 降级为MongoDB 2.x
  3. 使用Mongoid 5