• MongoDB用户认证和索引


    用户认证

    MongoDB默认是开启用户认证的,修改配置文件的authorization参数可以打开/关闭用户认证

    创建管理员

    
    > use admin
    switched to db admin
    > db.createUser({"user":"admin","pwd":"admin",roles:[{role:'userAdminAnyDatabase',db:'admin'}]})
    
    # 此用户只有创建用户和赋权的权限,不能在别的表定入数据
    
    
    

    创建普通用户

    use admin
    # 先用管理员登录
    db.auth("admin","admin")
    # 切换db,创建用户
    use mydb
    db.createUser({"user":"myuser","pwd":"mypwd",roles:[{role:'readWrite',db:'mydb'}]})
    
    # 在哪个表创建的用户,就要在哪个表登录,比如说刚刚没有切换到mydb这个db,就只能在admin中登录
    
    > use admin
    switched to db admin
    > db.createUser({"user":"myuser","pwd":"mypwd",roles:[{role:'readWrite',db:'mydb'}]})
    
    Successfully added user: {
            "user" : "myuser",
            "roles" : [
                    {
                            "role" : "readWrite",
                            "db" : "mydb"
                    }
            ]
    }
    >
    >
    > use mydb
    switched to db mydb
    >
    > db.auth("myuser","mypwd")
    Error: Authentication failed.
    0
    > use admin
    switched to db admin
    > db.auth("myuser","mypwd")
    1
    
    # 查看当前db中的用户
    >show uses
    
    # 查看admin库中的用户
    >db.system.users.find()
    
    

    数据库角色

    1. 内建的角色
    2. 数据库用户角色:read、readWrite;
    3. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
    4. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
    5. 备份恢复角色:backup、restore;
    6. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
    7. 超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
    8. 内部角色:__system

    索引

    索引的优点:

    1. 大大减少了服务器需要扫描的数据量;
    2. 索引可以帮助服务器避免排序或使用临时表;
    3. 索引可以将随机I/O转换顺序I/O;

    创建索引

    # 使用ensureIndex方法创建索引,key为创建索引的字段,1为升序创建索引,-1则是降序
    >db.collection_name.ensureIndex({KEY:1})
    
    # 复合索引
    >db.col.ensureIndex({"title":1,"name":-1})
    
    # 创建索引时,会引响数据写入时的性能,使用background参数让创建索引在后台执行
    >db.col.ensureIndex({"title":1,"name":-1},{background:true})
    
    # 分析查询语句是否使用索引
    >db.col.find("name":"xxxooo").explain()
    
  • 相关阅读:
    redis学习
    Ubuntu命令大全
    关于jquery中attr和prop的用法
    Ubuntu下修改为永久DNS的方法
    Yii2 behaviors中verbs access的一些理解
    vue_ form表单 v-model
    vue-one_demo_music
    ES6
    VUE 入门 01
    Django model.py表单设置默认值允许为空
  • 原文地址:https://www.cnblogs.com/baitutu/p/7801273.html
Copyright © 2020-2023  润新知