• mongodb授权认证 介绍


    mongodb存储所有的用户信息在admin 数据库的集合system.users中,保存用户名、密码和数据库信息。mongodb默认不启用授权认证,只要能连接到该服务器,就可连接到mongod。若要启用安全认证,需要更改配置文件参数auth
    官方文档:https://docs.mongodb.com/manual/tutorial/enable-authentication/

    • db.createUser( )函数介绍
    1:创建一个root用户,角色为userAdminAnyDatabase,因此root用户对数据库具有管理权限,但是不具备操作权限
    db.createUser({user:"root",pwd:"123456", roles: [{ role: "userAdminAnyDatabase", db: "admin" }]});
     
    2:createUser()方法说明
    user:定义用户名
    pwd:设置密码
    roles:指定用户的角色,可以用一个空数组给新用户设定空角色; 在roles字段,可以指定内置角色和用户定义的角色。
    db:指定用户对哪个数据库具有管理员权限
     
    3:角色种类说明
    Built-In Roles(内置角色):
    ①. 数据库用户角色:read、readWrite;
    ②. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
    ③. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
    ④. 备份恢复角色:backup、restore;
    ⑤. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
    ⑥. 超级用户角色:root
    // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
    ⑦. 内部角色:__system
     
    4:角色对应的意义说明
    Read:允许用户读取指定数据库
    readWrite:允许用户读写指定数据库
    dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
    userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
    clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
    readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
    readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
    userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
    dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
    root:只在admin数据库中可用。超级账号,超级权限
     
    5:查看授权表
    db.system.users.find();
     
    6:此时退出MongoDB,且编辑配置文件/etc/mongod.conf, 添加
    auth=true(针对于2.6版本)
    security:(针对于3.4版本)
    authorization: enabled
     
    7:可以在连接数据库的时候认证,也可以在登入时候认证,这里使用登入之后认证的方式
    show dbs; (会报错,因为没有管理授权)
    db.auth("root", "123456") 授权之后再查看数据库就没有问题了
     
    8:此时登入使用的是root用户,角色是管理角色,但是不具备对数据库的操作权限
    use test;
    show collections; (会报错,因为没有操作权限)
     
    9:再次创建一个用户: test,让其对test具有读写操作, 且切换用户为test
    db.createUser({user:"test",pwd:"test", roles: [{ role: "readWrite", db: "test" }]});
    db.auth("test", "test")
     
    10:再次查看test库的表,发现可以查看了
    show collections;
     
    11:其实,如果需要创建一个用户具有管理权限且同时具有操作权限,那么这个用户的角色必须是root
    db.createUser({user:"yhy",pwd:"123456", roles: [{ role: "root", db: "admn" }]});
  • 相关阅读:
    2012年春晚剧本
    研究机器人
    85.圆角边框的两大要素 Walker
    81.边框设置 Walker
    76.背景固定 Walker
    84.边框方向 Walker
    86.圆角边框设置 Walker
    82.边框宽度和边框颜色 Walker
    88.轮廓和样式重置 Walker
    77.背景简写 Walker
  • 原文地址:https://www.cnblogs.com/liu1026/p/7787912.html
Copyright © 2020-2023  润新知