• MongoDB3.x创建用户与用户角色


    为了MongoDB的安全,我们必须通过用户名和密码登陆后才能操作MongoDB,增加一个管理员:

    注:MongoDB安装好以后由默认的admin表和local表;其中admin存放的是用户信息

    定义:

    创建一个数据库新用户用db.createUser()方法,如果用户存在则返回一个用户重复错误。

    语法:

    1

    2

    3

    db.createUser(user, writeConcern)

    user 这个文档创建关于用户的身份认证和访问信息;

    writeConcern 这个文档描述保证MongoDB提供写操作的成功报告。

    user文档,定义了用户的以下形式:

    1

    2

    3

    4

    5

    6

    7

    8

    {   user: "",

    pwd: "",

    customData: {  },

    roles: [

    { role: "", db: "" } | "",

    ...

    ]

    }

    例如:在admin数据库创建用户accountAdmin01,并给该用户admin数据库上clusterAdmin和readAnyDatabase的角色,products数据库上readWrite角色。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    use admin

    db.createUser( { "user" "accountAdmin01",

                     "pwd""cleartext password",

                     "customData" : { employeeId: 12345 },

                     "roles" : [ { role: "clusterAdmin", db: "admin" },

                                 { role: "readAnyDatabase", db: "admin" },

                                 "readWrite"

                                 ] },

                   { w: "majority" , wtimeout: 5000 } )

    创建用户实例:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    use admin

    //创建角色为 userAdminAnyDatabase 的用户

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

    //创建一个不受访问限制的超级用户 

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

    //创建一个一般用户

    db.createUser({user:"oneUser",pwd:"12345",roles:[{role:"read",db:"db01"},{role:"read",db:"db02"},{role:"read",db:"db03"}]})

    用户在./mongo后登陆

    1

    2

    db.auth('root','root')

    show dbs

    验证用户登录

    1

    ./mongo -u accountAdmin01 -p yourpassward --authenticationDatabase dbName

    修改用户密码

    1

    2

    use admin

    db.changeUserPassword("username""xxx")

    查看用户信息

    1

    2

    db.runCommand({usersInfo:"userName"})

    db.getUsers()

    修改密码和用户信息

    1

    db.runCommand({ updateUser:"username", pwd:"xxx", customData:{title:"xxx"} })

    删除一个用户

    1

    2

    3

    4

    5

    use admin

    switched to db admin

    > db

    admin

    > db.system.users.remove({user:"root"});

    给一个用户授权

    1

    2

    3

    4

    5

    6

    7

    use admin

    db.grantRolesToUser(

      "mongoUser",

      [

        { role: "readAnyDatabase", db:"admin" }

      ]

    )

    roles 用户角色

    1

    2

    3

    4

    5

    6

    7

    8

    9

    1. 数据库用户角色:read、readWrite;

    2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;

    3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;

    4. 备份恢复角色:backup、restore;

    5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

    6. 超级用户角色:root  

    // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)

    7. 内部角色:__system

    PS:关于每个角色所拥有的操作权限可以在官网https://docs.mongodb.com/manual/reference/built-in-roles/#built-in-roles查看

  • 相关阅读:
    【嵌入式——QT】线程同步
    04.4. 模型选择、欠拟合和过拟合
    SSM框架集成
    五线谱与简谱有什么区别 五线谱简谱混排怎么打 吉他谱软件哪个好
    Docker
    django-发送邮件
    最新gcc下载和linux环境变量设置
    多叉树组合运算(未完待续)
    视频评价工具AVQT介绍
    3.机器学习-十大算法之一线性回归算法(LinearRegression)原理讲解
  • 原文地址:https://blog.csdn.net/zjwlgr/article/details/126153949