xiaobaitu

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

用户认证

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()
posted on 2017-11-07 21:45  xiaobaitu  阅读(123)  评论(0编辑  收藏  举报