Unauthorized: not authorized on test to execute command { dbstats: 1.0, scale: undefined, $db: "test

當前版本3.6.2mongodb

問題緣由出在讀寫的權限上:stackoverflow上的解決方法shell

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

$ mongod --auth

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

$ 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..."code

> 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:get

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

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

> 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:io

> 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.class

相關文章
相關標籤/搜索