docker下的开启权限,密码的mongo容器

  1. 根据官方mongo镜像,拉取到本地,docker pull mongo
  2. 通过docker run -p 27017:27017 –name mongo1 -v /data/db:/data/db -d imgId –auth 开启 mongo容器,-v 左侧指定的是宿主机目录,右面是容器目录,开启mongo容器之前,最好保证宿主机该目录为空,不然会出现某些错误。
  3. 然后通过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
    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数据库中可用。超级账号,超级权限
    5. 上一步创建成功之后,我们就可以通过use test,(test 为我们想要创建的数据库名字),进入到我们的数据库,此时通过show dbs 我们尚无法看到我们创建的test数据库,(因为我们还未在其中添加集合),此时登陆我们为此数据库创建的读写账户,db.auth(‘test’,’test’),返回1后,我们就可以通过db.collectionName.insert({x:1}),添加我们所需要的集合.成功后返回WriteResult({ "nInserted" : 1 })。
    6. 此时我们的开启了权限的mongo就创建成功了

猜你喜欢

转载自blog.csdn.net/sinat_18474835/article/details/88970728