Unauthorized: not authorized on test to execute command { dbstats: 1.0, scale: undefined, $db: "test" } 错误的解决


当前版本3.6.2

问题原因出在读写的权限上:stackoverflow上的解决方法

You should have started the mongod instance with access control, i.e., the --auth command line option, such as:

$ mongod --auth

Let's start the mongo shell, and create an administrator in the admin database:

$ mongo > use admin > db.createUser( { user: "myUserAdmin", pwd: "abc123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )

Now if you run command "db.stats()", or "show users", you will get error "not authorized on admin to execute command..."

> db.stats() { "ok" : 0, "errmsg" : "not authorized on admin to execute command { dbstats: 1.0, scale: undefined }", "code" : 13, "codeName" : "Unauthorized" }

下面这两句最重要,如果是开始新建 ,则要从头开始看

The reason is that you still have not granted role "read" or "readWrite" to user myUserAdmin. You can do it as below:

> db.auth("myUserAdmin", "abc123") > db.grantRolesToUser("myUserAdmin", [ { role: "read", db: "admin" } ])

Now You can verify it (Command "show users" now works):

> show users { "_id" : "admin.myUserAdmin", "user" : "myUserAdmin", "db" : "admin", "roles" : [ { "role" : "read", "db" : "admin" }, { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }

Now if you run "db.stats()", you'll also be OK:

> db.stats() { "db" : "admin", "collections" : 2, "views" : 0, "objects" : 3, "avgObjSize" : 151, "dataSize" : 453, "storageSize" : 65536, "numExtents" : 0, "indexes" : 3, "indexSize" : 81920, "ok" : 1 }

This user and role mechanism can be applied to any other databases in MongoDB as well, in addition to the admin database.


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM