當前版本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