2

我使用的是 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:“未授权查询

有什么我想念的吗?也许我需要创建一个特殊用户?

4

1 回答 1

3

userAdminAnyDatabase 角色并没有完全按照您的想法行事。以下是MongoDB 文档对此的评价:

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

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

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

db.addUser({user: 'username', pwd: 'password', roles: ['readWriteAnyDatabase', 'userAdminAnyDatabase']})
于 2013-08-19T18:22:48.093 回答