安装好MongoDB时,它为我们默认开了一个最高管理权限方便我们管理数据库,我们可以用mongo链接数据库,就是这个原理。但在实际开发中并一般不能使用这个用户,因为大家都知道和最高权限的原因,安全性和可靠性都不适合,所以要对MongoDB的用户进行管理。这次我们就学习一下MongoDB的用户管理。

创建用户:

首先要进入我们的admin库中,进入方法是直接使用use admin 就可以。进入后可以使用show collections来查看数据库中的集合。默认是只有一个集合的(system.version)。

创建用户可以用db.createUser方法来完成,里边参数还是蛮多的,代码我写在下边,然后对每一项做出了解释。

db.createUser({
    user:"hejian",
    pwd:"123456",
    customData:{
        name:'hejian',
        email:'web0432@126.com',
        age:18,
    },
    roles:['read']
})

当然我们还可以单独配置一个数据库的权限,比如我们现在要配置compay数据库的权限为读写:

db.createUser({
    user:"hejian",
    pwd:"123456",
    customData:{
        name:'hejian',
        email:'web0432@126.com',
        age:18,
    },
    roles:[
        {
            role:"readWrite",
            db:"company"
        },
        'read'
    ]
})

内置角色:

  1. 数据库用户角色:read、readWrite;
  2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
  3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManage;
  4. 备份恢复角色:backup、restore;
  5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  6. 超级用户角色:root
  7. 内部角色:__system

查找用户信息

我们直接可以使用查找的方法,查找用户信息。命令很简单:

dbd .system.users.find()

删除用户:

删除名利也是非常简单,直接用remove就可以删除这个用户的信息和权限。

db.system.users.remove({user:"hejian"})

建权:

有时候我们要验证用户的用户名密码是否正确,就需要用到MongoDB提供的健全操作。也算是一种登录操作,不过MongoDB把这叫做建权。

db.auth("hejian","123456")

如果正确返回1,如果错误返回0。(Error:Authentication failed。)

启动建权

重启MongoDB服务器,然后设置必须使用建权登录。

mongod --auth

启动后,用户登录只能用用户名和密码进行登录,原来的mongo形式链接已经不起作用了。相应的用户权限也对应妥当。实际项目中我们启动服务器必须使用建权形式。

登录

如果在配置用户之后,用户想登录,可以使用mongo的形式,不过需要配置用户名密码:

mongom  -u hejian -p 123456 127.0.0.1:27017/admin

这时候我们就可以用给我们的权限对数据库操作了。

数据备份

先来看一下mongodump备份的基本格式,其实这就是条在终端中执行的命令。

mongodump
    --host 127.0.0.1
    --port 27017
    --out /usr/local/mongod数据备份  //备份到哪里
    --collection myCollections   //备份到哪个集合
    --db test           //备份到哪个数据库
    --username username
    --password password

比如现在我们备份所有MongoDB里的库到/usr/local/mongod数据备份文件夹下,就可以把命令写成这样

mongodump --host 127.0.0.1 --port 27017 --out /usr/local/mongod数据备份

数据恢复

备份好后,如果数据库有意外或者遭受到了攻击,我们要进行回复数据库,这时候就可以使用mongorestore命令。

还是先看一下它的基本格式

mongorestore
    --host 127.0.0.1
    --port 27017
    --username username
    --password password
    <path to the backup>

比如我们现在不小心删除了一个collections的数据,要进行恢复。现在删除randomInfo集合。

db.randomInfo.drop()

使用命令进行恢复

mongorestore --host 127.0.0.1 --port 27017 /usr/local/mongod数据备份

 

 

总结:两个命令很简单,甚至你可以写成脚本和定时任务,让他每天自己执行。但是如果你真的使用了MongoDB数据库,这是一个最基本的操作,还是要会使用的。