1. 安装可以开启密码登陆,开启权限的mongo
  2. 根据官方mongo镜像,拉取到本地
  3. 通过docker run -p 27017:27017 –name mongo1 -v /data/db:/data/db -d imgId –auth 开启 mongo容器,-v 左侧指定的是宿主机目录,右面是容器目录,开启mongo容器之前,最好保证宿主机该目录为空,不然会出现某些错误。
  4. 然后通过docker exec -it containID mongo admin命令,或者直接 docker exec -it containId bash进入到mongo容器,然后连接上容器中的mongo之后,
  1. 输入命令use admin,使用admin数据库。
  2. 通过db.createUser({user:"root",pwd:"root",roles:[{role:"root",db:"admin"}]}) 命令,创建一个对于admin数据库最高权限的账户。创建成功之后会返回Successfully add user { xxxxx…略}
  3. 成功之后通过命令db.auth(‘root’,’root’),进行登陆认证。然后返回1,然后use test(你要创建的数据库名称).
  4. 此时创建你需要的相对应权限的账户,db.createUser({user:"test",pwd:"test",roles:[{role:"readWrite ",db:"test"}]}),user与pwd就是账户与密码,role,就是下面的权限,db就是这个用户在哪个数据库所拥有这些权限(注意:创建此类账户时,此时的登陆账户必须为我们最开始创建的root账户,如果不是,请重新使用use admin命令,加上db.auth(‘root’,’root’)登陆该账户【因为在该mongo中只有此账户拥有管理用户的权限】)
  1. 权限对应:
  2. Read:允许用户读取指定数据库
  3. readWrite:允许用户读写指定数据库
  4. dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
  5. userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
  6. clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
  7. readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
  8. readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
  9. userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
  10. dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
  11. root:只在admin数据库中可用。超级账号,超级权限
  1. 上一步创建成功之后,我们就可以先通过ctrl+D命令推出容器,然后再次通过命令:docker exec -it containId bashs进入该容器,连接mongo,通过use test,(test 为我们之前创建的数据库名字),进入到我们的数据库,此时通过show dbs 我们尚无法看到我们创建的test数据库,(因为我们还未在其中添加集合),此时登陆我们为此数据库创建的读写账户,db.auth(‘test’,’test’),返回1后,我们就可以通过db.collectionName.insert({x:1}),添加我们所需要的集合.成功后返回WriteResult({ "nInserted" : 1 })。
  2. 此时我们的开启了权限的mongo就创建成功了