零基础学习MongoDB (三)—— 管理用户
在b站上听了几个老师的课,有涉及到mongodb的一些历史,比如删库勒索,因此开放的数据库是很危险的,所以我们需要给它们添加管理用户,这样为我们的数据安全加一道墙
一、管理员类型
mongodb
提供了很多了角色,用于不同情境下对数据库进行管理:
- 数据库用户角色:
read
、readWrite
- 数据库管理角色:
dbAdmin
、dbOwner
、userAdmin
- 集群管理角色:
clusterAdmin
、clusterManager
、clusterMonitor
、hostManager
- 备份恢复角色:
backup
、restore
- 所有数据库角色:
readAnyDatabase
、readWriteAnyDatabase
、userAdminAnyDatabase
、dbAdminAnyDatabase
- 超级用户角色:
root
特别注意:dbOwner
是某个数据库的所有者,root
拥有所有权限
二、创建超级管理员用户
mongodb
自带的admin
数据库,是所有管理员的集合
默认mongodb
不开启认证登录,在开启之前,我们必须要创建一个超级管理员,用于管理其他账户,还需要配置cfg
文件开启安全认证
在开启安全认证前在命令行输入mongo
,看到的会是这样一大串(记住噢)
1. 创建用户
通过db.createUser
配置用户名,密码,权限,用户管理的数据库
> use admin
switched to db admin
> db.createUser({user:"admin",pwd:"123456",roles:[{role:"root",db:"admin"}]})
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
通过show users
查看当前数据库中的用户
2. 开启认证登录
修改mongodb
安装目录下的bin
目录下的mongod.cfg
文件,添加以下代码
security:
authorization: enabled
注意:文件中#
号开头的可以理解为是注释掉的,所以如果不想开启安全认证可以加#
号来关闭
3. 重启服务
win R
键,输入services.msc
,重启mongodb Server
服务
4. 通过验证登录
当我们成功开启安全认证后,命令行直接输入mongo
,看到的东西会只有一点,相对于之前的少了很多
同时当输入show dbs
查看数据库时,会发现没有数据库,这时候我们需要登录我们先前注册的账号,采用命令,填写的内容分别是账号和密码,成功登录会返回1
,否则返回0
db.auth("admin","123456")
这时候我们再查看数据库,就可以看到内容了,
三、更新用户密码
代码语言:javascript复制db.updateUser('admin',{pwd:'password'})
操作演示
更改用户权限只需要将,后面的
pwd
换成role
,修改即可,可多个
四、删除用户
代码语言:javascript复制db.dropUser('username')
在有删除该库权限的用户下,即可删除用户
五、创建某个数据库管理员
创建了一个只能管理test
数据库的管理员
db.createUser({user:"test",pwd:"123456",roles:[{role: "dbOwner", db: "test" }]})
在登录时,我们需要切换到对应的test
库再进行验证登录
use test
db.auth("test","123456")