如何允许用户在mongodb 2.6上运行eval命令

codeday· 2019-11-13
本文来自 codeday ,作者 codeday
如文档中所述,我必须创建一个允许在anyResource上执行anyAction的角色,但是只能在管理数据库中创建此角色,因此其外观如下:

use admin
db.createRole({
    role: 'superuser',
    privileges:[{
        resource: {anyResource: true},
        actions: ['anyAction']
    }],
    roles: []
})

下一步是向用户授予此角色,但这是问题所在,我无法从管理数据库向另一个数据库的用户授予该角色,因此此命令:

db.createUser({
    user: 'someusername',
    pwd: 'somepassword',
    roles: [{
        role: 'superuser',
        db: 'somedatabase'
    }]
})

返回预期:

Error: couldn't add user: No role named superuser@somedatabase

因此,我该怎么做才能允许用户someusername在somedatabase上运行eval命令?

最佳答案
因此,问题出在不正确的角色列表中.正确的是:

db.createUser({
    user: 'someusername',
    pwd: 'somepassword',
    roles: ['superuser']
})