MongoDB - Root和dbOwner无权运行update命令

cle*_*swt 2 authentication r mongodb

最后我想使用R + MongoDB.为此我在Linux上设置MongoDB并执行以下操作:

  • 在shell上运行mongo命令
  • 使用admin db
  • 添加root用户
  • 以root身份验证:db.auth("root","PASSWORD")
  • 这是root用户权限

    {
    "_id" : "admin.root",
    "user" : "root",
    "db" : "admin",
    "roles" : [
        {
            "role" : "dbOwner",
            "db" : "admin"
        },
        {
            "role" : "readWrite",
            "db" : "admin"
        },
        {
            "role" : "root",
            "db" : "admin"
        }
    ]}
    
    Run Code Online (Sandbox Code Playgroud)

运行命令以便在R和Mongo工作之间进行身份验证

> var schema = db.system.version.findOne({"_id" : "authSchema"})
> schema.currentVersion = 3
3
> db.system.version.save(schema)
Run Code Online (Sandbox Code Playgroud)

获得以下结果

WriteResult({
"writeError" : {
    "code" : 13,
    "errmsg" : "not authorized on admin to execute command { update: \"system.version\", updates: [ { q: { _id: \"authSchema\" }, u: { _id: \"authSchema\", currentVersion: 3 }, multi: false, upsert: true } ], ordered: true }"
}})
Run Code Online (Sandbox Code Playgroud)

root和dbOwner不允许执行更新?我错过了什么?o.0

小智 9

我自己遇到了同样的问题.原来我需要"__system"角色.

db.grantRolesToUser ( "root", [ { role: "__system", db: "admin" } ] )
Run Code Online (Sandbox Code Playgroud)