我使用的是2.4.4版,遵循http://docs.webfaction.com/software/mongodb.html的程序,并使用Mongoid和Ruby on Rails。我还在我正在使用的db中使用“userAdminAnyDatabase”权限创建了一个用户,并将其与此rails mongoid配置一起使用:
production:
sessions:
default:
database: <table>
hosts:
- localhost:<port>
username: <user>
password: <password>
我让服务器使用--auth标志运行,我也尝试使用mongodb cpmmand行的用户,它可以工作,但我部署了我的Rails应用程序,我仍然得到:
失败,错误16550:“未授权查询
我有什么遗失的吗?也许我需要创建一个特殊用户?
答案 0 :(得分:3)
userAdminAnyDatabase角色并不能完全按照您的想法执行。以下是MongoDB docs对此的评论:
重要:由于具有userAdminAnyDatabase和userAdmin的用户除了拥有自己的访问级别外,还能够创建和修改权限,因此该角色实际上是MongoDB系统的超级用户。但是,userAdminAnyDatabase和userAdmin不会明确授权用户获得用户管理之外的任何权限。
为您创建userAdminAnyDatabase角色的用户实际上只允许他们管理数据库(创建新用户,删除用户,访问系统。*集合),但实际上并不授权他们读取或写入任何数据。 / p>
如果要创建具有所有管理员权限并且还可以在任何数据库中读写的超级用户,则还需要为用户提供readWriteAnyDatabase角色。
db.addUser({user: 'username', pwd: 'password', roles: ['readWriteAnyDatabase', 'userAdminAnyDatabase']})