zoukankan      html  css  js  c++  java
  • 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()
    
  • 相关阅读:
    POJ2054 Color a Tree
    洛谷【P1080】国王游戏
    BZOJ1707:[Usaco2007 Nov]tanning分配防晒霜
    BZOJ5281:[Usaco2018 Open]Talent Show
    浅谈二分
    BZOJ1720:[Usaco2006 Jan]Corral the Cows 奶牛围栏
    POJ2018 Best Cow Fences
    洛谷【P2115】[USACO14MAR]破坏Sabotage
    BZOJ 4244 邮戳拉力赛 (DP)
    UOJ #277 BZOJ 4739 [清华集训2016]定向越野 (计算几何、最短路)
  • 原文地址:https://www.cnblogs.com/baitutu/p/7801273.html
Copyright © 2011-2022 走看看