安装好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'
]
})
内置角色:
- 数据库用户角色:read、readWrite;
- 数据库管理角色:dbAdmin、dbOwner、userAdmin;
- 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManage;
- 备份恢复角色:backup、restore;
- 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
- 超级用户角色:root
- 内部角色:__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数据库,这是一个最基本的操作,还是要会使用的。