【问题标题】:Ruby on Rails Mongoid and Webfaction: Not Authorized For Query (Error 16550)Ruby on Rails Mongoid 和 Webfaction:未授权查询(错误 16550)
【发布时间】:2013-06-29 02:57:22
【问题描述】:

我使用的是 2.4.4 版本,遵循http://docs.webfaction.com/software/mongodb.html 的程序,并且正在使用 Mongoid 和 Ruby on Rails。我还在我正在使用的具有“userAdminAnyDatabase”权限的数据库中创建了一个用户,并将它与这个 rails mongoid 配置一起使用:

production:
  sessions:
    default:
      database: <table>
      hosts:
        - localhost:<port>
      username: <user>
      password: <password>

我的服务器使用 --auth 标志运行,我还尝试了使用 mongodb cpmmand 行的用户,它可以工作,但是部署了我的 Rails 应用程序后,我仍然得到:

因错误 16550 失败:“未授权查询

我有什么遗漏吗?也许我需要创建一个特殊用户?

【问题讨论】:

  • 几分钟前有类似的情况 - 数据库名称输入错误...

标签: ruby-on-rails mongodb mongoid webfaction


【解决方案1】:

userAdminAnyDatabase 角色并没有像您想象的那样做。以下是MongoDB docs 对此的评价:

重要:因为拥有 userAdminAnyDatabase 和 userAdmin 的用户除了拥有自己的访问级别之外,还可以创建和修改权限,所以这个角色实际上是 MongoDB 系统的超级用户。但是,userAdminAnyDatabase 和 userAdmin 并未明确授权用户获得用户管理之外的任何权限。

为您创建的用户提供 userAdminAnyDatabase 角色,实际上只允许他们管理数据库(创建新用户、删除用户、访问系统。* 集合),但实际上并没有授权他们读取或写入任何数据。

如果您想创建一个拥有所有管理员权限并且还可以在任何数据库中读写的超级用户,您还需要赋予该用户 readWriteAnyDatabase 角色。

db.addUser({user: 'username', pwd: 'password', roles: ['readWriteAnyDatabase', 'userAdminAnyDatabase']})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-03
    • 2012-10-23
    • 1970-01-01
    • 2013-04-10
    • 2015-07-04
    • 2013-03-28
    • 2016-05-12
    • 1970-01-01
    相关资源
    最近更新 更多