gpt4 book ai didi

ruby-on-rails - Rails Mongoid 无法验证 - 失败并出现错误 13 : "not authorized for query on my_db.my_collection"

转载 作者:IT老高 更新时间:2023-10-28 13:12:07 27 4
gpt4 key购买 nike

This issue据说最新版的助力车解决了,但还是发生在我身上。我有一个带有 Mongoid 的 rails 4.2 应用程序,为具有 readWritedbOwner 角色的 MongoDB DB 创建一个用户,并在 mong.conf 中设置 auth=true强>文件。
我可以使用 Mongo shell 或使用 Mongo 驱动程序的简单 Java 应用程序使用该用户凭据在数据库上执行任何操作。
但是,当尝试使用 Mongoid 进行身份验证时,我总是收到此错误:

failed with error 13: "not authorized for query on 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

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

最佳答案

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

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

Moped also falls short on a lot of essential functionality for supporting server version 3.0. For example, it simply doesn’t support authentication with MongoDB 3.0 or recent versions of the wire protocol (which includes commands such as listCollections, listIndexes, and the ability to do bulk writes). Integrating Mongoid with Ruby driver 2.0 will bring a lot of this functionality and forward-compatibility to the ODM. Source

好消息:目前正在进行重大的重写(Mongoid 5),这将得到 MongoDB 团队的支持。您今天可以从 master 中提取并测试它...但我不建议用于生产,因为它非常不稳定。

解决方案选项

  1. 从 MongoDB 和任何公共(public) DNS 中删除用户/传递身份验证到数据库。使用带有私钥的 SSH 并连接到私有(private)地址。
  2. 降级到 MongoDB 2.x
  3. 使用 Mongoid 5

关于ruby-on-rails - Rails Mongoid 无法验证 - 失败并出现错误 13 : "not authorized for query on my_db.my_collection",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29875839/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com