mongodb的权限管理
时间:2023-3-1 20:02 作者:wen 分类: mongodb
一、为什么要进行权限管理的设置
刚安装完毕的mongodb默认不使用权限认证方式启动,与MySQL不同,mongodb在安装的时候并没有设置权限,然而公网运行系统需要设置权限以保证数据安全。
二、权限管理方案
- mongodb是没有默认管理员账号,所以要先添加管理员账号,并且mongodb服务器需要在运行的时候开启验证模式
- 用户只能在用户所在数据库登录(创建用户的数据库),包括管理员账号。
- 管理员可以管理所有数据库,但是不能直接管理其他数据库,要先认证后才可以。
三、超级管理员账号的创建
1、创建超级用户
进入mongo shell
sudo mongod
使用admin数据库(超级管理员账号必须创建在该数据库上)
use admin
创建超级用户
db.createUser({"user":"root","pwd":"root","roles":["root"]})
创建成功会显示如下信息
Successfully added user:{"user":"root","roles":["root"]}
退出mongo shell
exit
2、以权限认证方式启动mongodb数据库
sudo mongod --auth
3、登录验证
此时再使用数据库各命令的时候会报权限错误,需要认证才能执行相应操作
use admin
db.auth("root","root")
- root用户是创建在admin数据库上的所以必须来到admin数据库上进行认证
- 认证成功会返回1,失败返回0
四、创建普通用户
1、创建普通用户
选择需要创建用户的数据库
use test1
创建用户
# 创建普通用户user1,该用户在test1上的权限是只读
db.createUser({"user":"user1","pwd":"pwd1","roles":["read"]})
# 创建普通用户user1,该用户在test1上的权限是读写
db.createUser({"user":"user1","pwd":"pwd1","roles":["readWrite"]})
2、在admin用户数据库上创建普通用户
use admin
db.createUser({"user":"python1","pwd":"python1","roles":[{"role":"read","db":"dbname1"},{"role":"readWrite","db":"dbname2"}]})
在admin上创建python1用户,python1用户的权限有两个,一个在dbname1上只读,另一个是在dbname2上读写。
五、查看创建的用户
show users
六、删除用户
1、进入账号数据所在的数据库
use db_name
2、删除用户
db.dropUser("python")
标签: mongodb