mongoDB开启的 --auth 之后,使用 db.eval() 报错MongoError: not authorized on wang to execute command

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongoDB开启的 --auth 之后,使用 db.eval() 报错MongoError: not authorized on wang to execute command相关的知识,希望对你有一定的参考价值。

mongoDB开启auth验证后,除了创建用户和授权角色外,在执行一些特殊操作的时候,还是会“not authorized”错误,如在执行以下语句时

db.eval(db.whiteBoardUserEdit.find())

会报如下错误:

mongoDB开启的

解决步骤如下:

1.新建一个角色sysAdmin

首先切换到admin库

use  admin
db.createRole(
role: "sysAdmin",
privileges: [
resource:
anyResource: true
,
actions: [anyAction]
],
roles: []
)

2.将这个角色授权给当前用户(我的当前用户为admin)

首先还是要切换到admin库

use  admin
db.grantRolesToUser(
"admin",
[sysAdmin, role: "sysAdmin", db: "admin" ]
)

3.现在就可以正常执行以下语句了

mongoDB开启的

注意: db.eval()功能强烈不建议使用,因为在4.2已经被官方移除了

IMPORTANT
Starting in version 4.2, MongoDB removes the eval command. The deprecated db.eval(), which wraps the eval command, can only be run against MongoDB 4.0 or earlier versions. For behavior and example, refer to the 4.0 or earlier version of the manual.

参考地址:

​https://docs.mongodb.com/manual/reference/method/db.eval/#definition​

​https://docs.mongodb.com/manual/release-notes/4.2-compatibility/#remove-support-for-the-eval-command​


以上是关于mongoDB开启的 --auth 之后,使用 db.eval() 报错MongoError: not authorized on wang to execute command的主要内容,如果未能解决你的问题,请参考以下文章

mongodb权限机制以及扩展

MongoDB在windows服务器安装部署及远程连接MongoDB

mongodb 使用 robo3T 等工具添加用户之后还是 auth failed 的问题

Mongodb主从进行配置+auth

MongoDB用户及权限管理:角色说明

Mongodb 数据库的简单使用