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