mongodb权限认证

1.拉取mongo镜像

docker pull mongo

2.运行mongo容器

docker run -p 27017:27017 -v  /home/mongo/27017/db:/data/db  -v /home/mongo/conf:/data/configdb  --name mongo -d mongo --auth

/home/mongo/27017/db: 数据持久化存储路径

--auth开启权限认证

注:当mongo启用auth选项时,用户需要创建数据库帐号,访问时根据帐号信息来鉴权,而数据库帐号信息就存储在admin数据库下

3.进入容器

docker exec -it mongo bash

4.设置权限

  1)登录

     mongo admin

  2) 切换到admin数据库

    use admin

  3) 创建超级用户

    db.createUser({user:"root",pwd:"root",roles:[{role: 'root', db: 'admin'}]})

  4) 创建管理员用户

    a) 退出

       exit

    b) 使用root用户登录

       mongo -uroot -proot

    c) 切换到admin数据库

       use admin

    d) 创建管理员用户

      db.createUser({user:"admin",pwd:"admin",roles:[{role: 'userAdminAnyDatabase', db: 'admin'}]})

  5) 创建数据库权限用户

    use test

    db.createUser({user:"test",pwd:"test",roles:[{role: 'readWrite', db: 'test'}]})

   注:MongoDB 目前内置了 7 个角色。

    数据库用户角色:read、readWrite;
    数据库管理角色:dbAdmin、dbOwner、userAdmin;
    集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
    备份恢复角色:backup、restore;
    所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase;
    超级用户角色:root;
    内部角色:__system
    这些角色对应的作用如下:

    Read:允许用户读取指定数据库
    readWrite:允许用户读写指定数据库
    dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
    userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
    clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
    readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
    readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
    userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
    dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
    root:只在admin数据库中可用。超级账号,超级权限

  如果觉得使用命令操作麻烦,建议使用Studio 3T客户端工具操作,很方便,而且还支持sql语法查询数据。

  工具下载地址:https://robomongo.org/download

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章