2015-05-28 53 views
0

我已经将我的MongoDB从2.4.10升级到3.0.2。我的数据库为​​,用户为"xt"。在使用db.authenticate()进行身份验证后,我可以执行crud操作,但我无法运行eval命令。它引发错误的Eval脚本不能用于mongo db 3.0.2

未经许可无权在ABC执行命令{$ EVAL:“deleteDetails()”}

当我检查管理数据库​​收集数据库用户

{ 
    "_id" : "abc.xt", 
    "user" : "xt", 
    "db" : "abc", 
    "credentials" : { 
     "SCRAM-SHA-1" : { 
      "iterationCount" : 10000, 
      "salt" : "mydgFCRFo05wh616qw6g1g==", 
      "storedKey" : "c8YfzCZZ1qqw2EM8MRDQugQFk4s=", 
      "serverKey" : "4JVLAIevhbJI6PtdDRRbelJa4pU=" 
     } 
    }, 
    "roles" : [ 
     { 
      "role" : "dbOwner", 
      "db" : "abc" 
     } 
    ] 
} 

有谁可以告诉,什么可能是问题,我也看到,eval已被弃用,如果是的话,可以在mongo shell和节点js中使用替代方案。

回答

1

从2.6开始,他们让eval命令需要超级用户访问数据库,所以dbOwner没有足够的访问权限。我正在研究这个,我相信命令/ runCommand可能会取代eval,因为它现在已经被弃用了。