MoongoDB安全(用户权限)十一

流程:

  1. 创建超级管理员
  2. 修改配置文件,验证身份登录
  3. 重启服务
  4. 使用超级管理员登录
  5. 创建普通用户
  6. 使用普通用户登录对应的数据库
mongoDB中的数据库角色

在这里插入图片描述

1、创建超级管理员(指明角色和授予的数据库)

超级管理员只能用于帐号管理,不能进行其他数据库操作,可以通过自己给自己授权实现

> use admin
switched to db admin
> db.createUser({"user":"root",pwd:"123456",roles:[{role:"root",db:"admin"}]})
Successfully added user: {
        "user" : "root",
        "roles" : [
                {
                        "role" : "root",
                        "db" : "admin"
                }
        ]
}
2、修改配置文件(mongod.cfg)

如果不修改配置文件里的权限验证,那么自己创建的普通用户将可以像超级用户一样可以操作MongoDB里的所有数据库及文档等等,包括创建用户
如果是命令模式启动的话,就在原来的启动参数上,在加上 –auth 即可

c:\> mongod --auth --dbpath "D:\..\MongoDB\Server\4.0\data"

如果是windows service方式运行的话,打开 mongo配置文件mongod.cfg, 在security项下,将authorization设置为enabled, 默认是disabled

security:
  authorization: enabled

然后重启service就可以了
记住是重新启动服务

3、登录数据库:(需要制定数据库和密码)
D:\MongoDB\Server\4.0\bin>mongo -u root -p 123456 --authenticationDatabase admin

mongo后面的都是配置参数
authenticationDatabase指定了校验用户账户名和密码的数据库
admin 为进入的数据库,此时是想进admin数据库

3、实际开发中是超级管理员创建一普通账户并给其分配对应的数据库,让普通账户只能进行操作指定的数据库
(1)创建普通用户

用户名:user
密码:123456
权限:读写操作

> db.createUser({user:"user",pwd:"123456",roles:[{role:"readWrite",db:"first"}]})
Successfully added user: {
        "user" : "user",
        "roles" : [
                {
                        "role" : "readWrite",  //权限
                        "db" : "first"
                }
        ]
}

role(即权限范围),而roles 是权限的数组

(2)登录普通用户

第一种开始登录时验证

mongo -u 账号 -p 密码  --authenticationDatabase admin //这种方式是从开始登录验证,最后是它验证账号密码的数据库

当然如果普通用户想登陆进它没有权限的数据库会是下面这样

D:\MongoDB\Server\4.0\bin>mongo -u user -p 123456  --authenticationDatabase admin
MongoDB shell version v4.0.10
connecting to: mongodb://127.0.0.1:27017/?authSource=admin&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("52920944-3c6e-44de-9536-5844e8e15f01") }
MongoDB server version: 4.0.10
> show tables  //查看当前数据库下的集合
Warning: unable to run listCollections, attempting to approximate collection names by parsing connectionStatus

根本就显示不出来当前数据库的所有集合,因为你目前在test数据库(默认的)
而显示所有的数据库

> show dbs
first  0.000GB

只显示有权限的,没权限的就隐藏起来了
如果想操作还要use指定的数据库才能操作
开始登录直接登录到指定数据库

mongo first -u user -p 123456 --authenticationDatabase admin

这样进去就在first数据库了
第二种是登陆进去后想切换用户

db.auth("账号","密码")

这记住管理员账号(即管理员权限)能切换到普通账号,但是普通账号不能切换管理员账号

权限说明(基于角色的权限控制)

内置角色

数据库用户角色

read: 只读数据权限
readWrite:学些数据权限

数据库管理角色

dbAdmin: 在当前db中执行管理操作的权限
dbOwner: 在当前db中执行任意操作
userADmin: 在当前db中管理user的权限

备份和还原角色

backup
restore

夸库角色

readAnyDatabase: 在所有数据库上都有读取数据的权限
readWriteAnyDatabase: 在所有数据库上都有读写数据的权限
userAdminAnyDatabase: 在所有数据库上都有管理user的权限
dbAdminAnyDatabase: 管理所有数据库的权限

集群管理

clusterAdmin: 管理机器的最高权限
clusterManager: 管理和监控集群的权限
clusterMonitor: 监控集群的权限
hostManager: 管理Server

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值