MongoDB-权限管理
mongodb安装的时候并没有设置权限,所以要安装好后手动添加权限,并且mongo服务器在运行的时候开启验证模式
1、创建超级管理员用户:
步骤一:
使用admin数据库(超级管理员账号必须创建在该数据库上), mongodb默认是没有的,要我们手动执行创建一个。
命令:use admin
步骤二:
创建一个root用户,并赋予超级管理员权限root,超级管理员可以管理MongoDB下的所有库以及权限、备份以及集群等操作。超级管理员账号必须创建在admin数据库上。
命令:db.createUser({user:"root",pwd:"123456",roles:["root"]})
步骤三:
为admin库创建一个admin用户,并赋予管理权限。
命令:db.createUser({user:"admin",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
步骤四:
新建一个库biz,给该库添加一个用户demo,密码:demo,并赋予读写及管理员权限。
创建biz库:use biz
创建用户并授权:db.createUser({user:"demo",pwd:"123456",roles:["readWrite","dbAdmin"]})
测试一下授权是否ok, 返回1表示成功,返回0表示失败:db.auth('demo','123456')
2、开启验证模式:
步骤一:
找到mongo的配置文件mongo.conf添加配置:注意在enabled前面有个空格,一定要加
security:
authorization: enabled
步骤二:
重启mongo,通过mongo的shell客户端关闭mongo:
db.shutdownServer()
启动mongo:
sudo mongod --config /usr/local/etc/mongod.conf
步骤三:
测试一下权限情况,mongo命令连接并尝试用 show dbs查看数据库
show dbs
输出:
[thread1] Error: listDatabases failed:{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
"code" : 13
} :
从输出结果看,执行show dbs没有权限,表示我们配置成功
3、其他
3.1、创建look用户,分别在数据库test1和test2有不同的权限:
db.createUser(user:"look",pwd:"123456",roles:[{db:"test1",role:"read"},{db:"test2",role:"readWrite"}])
3.2、删除用户,必须在超级管理员用户下操作
命令:db.dropUser(用户名)
示例: db.dropUser(look)
参考:
【1】https://www.jianshu.com/p/33e3940db2b2