mongo eval方法执行需要认证解决办法
2018-03-27 15:12
423 查看
mongo删除数据后,仍然占用磁盘空间,导致无法获知真正仍可用的空闲磁盘空间的大小。为了释放空间,采用先复制集合数据,然后在删除旧集合的策略。由于copyTo()方法会把整个数据库锁住,所以采用eval()方法进行复制集合。db.runCommand({ eval: function(source, dest) {var count = 0; var errorId;var doc = db.getCollection(source).find().sort({ _id: 1 }); var d; while (doc.hasNext()) {d = doc.next();try {db.getCollection(dest).insertOne(d); count++;} catch (e) {errorId = d._id;break;}} return { count: count, errorId: errorId }; }, nolock: true, args: ["name1", 'name2'] });执行后报错:{ "ok" : 0.0, "errmsg" : "not authorized on dbName to execute command ...}", "code" : 13 }根据官方的解决办法如下:1.首先创建角色db.createRole( { "role": "evalRole", "db": "admin", "privileges": [ {"resource": {"anyResource": true }, "actions": ["anyAction"] } ], "roles": [ {"role": "root", "db": "admin"} ] } ) 2.将角色授权给需要操作的用户。为了方便,直接将该角色添加到现有的登陆账户中。修改system.users集合中对应的用户信息。在roles属性中添加{"role" : "evalRole", "db" : "admin"}为了安全起见,最好将该权限仅赋给一个用户。因为该角色可以对任何资源进行任何操作。
以上内容是转载的,下面是我自己的实际操作:
1.首先创建角色
db.createRole({role:'evalRole',privileges:[{resource:{anyResource:true},actions:['anyAction']}],"roles": [{"role": "root", "db": "admin"}]})
2.将角色授权给需要操作的用户。
use dbname
db.createUser({user:'user_evalRole',pwd:'123456',roles:[{role:'evalRole',db:'admin'}]})
以上内容是转载的,下面是我自己的实际操作:
1.首先创建角色
db.createRole({role:'evalRole',privileges:[{resource:{anyResource:true},actions:['anyAction']}],"roles": [{"role": "root", "db": "admin"}]})
2.将角色授权给需要操作的用户。
use dbname
db.createUser({user:'user_evalRole',pwd:'123456',roles:[{role:'evalRole',db:'admin'}]})
相关文章推荐
- mongo eval方法执行需要认证解决办法
- AppLocale安装方法,及带来的中文软件执行问题解决办法
- shiro不执行认证的解决办法
- Windows7删除文件提示"您需要权限来执行此操作"没有权限无法删除文件的解决方法
- window7中出现 "你需要权限来执行此操作" 的解决方法
- iOS中CoreLocation定位的代理方法不执行的解决办法。
- 解决onActivityResult方法不执行的办法
- Window下java -jar *.jar需要管理员执行的解决办法
- android RadioGroup调用check(id)方法时,onCheckedChanged方法被执行多次解决办法
- Android中onTouch方法的执行过程以及和onClick执行发生冲突的解决办法
- 重写dispatchKeyEvent方法 按返回键back 执行两次的解决办法
- 关于Android中调用了post方法后貌似没有执行run方法的解释及解决办法
- RadioGroup调用check(id)方法时,onCheckedChanged方法被执行多次解决办法
- 执行java.io.ByteArrayOutputStream.write 方法内存突然加大的原因与解决办法
- cocos2d-x调用scheduleUpdate()不执行update()方法的解决办法
- 获取Google Maps API 指纹证书时获取的是SHA1型的,而认证时需要的是MD5的解决方法
- tp中save代码正确,无法执行问题,删除缓存试试.---根本的解决办法还需要思考
- Win7复制文件时出现:“您需要权限来执行操作!”(终极解决方法!)
- 调用RadioGroup的check(id)方法,监听onCheckedChanged方法被执行多次;调用clearCheck(),onCheckedChanged方法仍被执行的解决办法
- .net中Smtp发送邮件需要认证的解决办法