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

    【2】https://zhuanlan.zhihu.com/p/24891732

    【3】https://www.cnblogs.com/mymelody/p/5906199.html

posted @ 2021-03-05 16:04  寻找风口的猪  阅读(300)  评论(0编辑  收藏  举报