当前版本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.