mongoDB 3.0安全权限访问控制

关于MongoDB 3.0的权限,通过各种搜索大神,出来一片错误的坑文,其实通过阅读官方文档得知,老版用户创建方法已不复存在,已有新方法代替。


首先我们在配置文件mongodb.conf中,权限配置auth不要进行配置,待创建管理用户后再开启该配置。


首先我们来设置职能管理用户的权限,它对应的角色为:userAdminAnyDatabase或userAdmin

1、添加管理用户:

use admin 
db.createUser( 
    { 
        user: "admin",
        pwd: "admin", 
        roles: [ 
            { role: "userAdminAnyDatabase", db: "admin" } 
        ]   
    } 
)

注意:这里的的db.createUser()是新版中创建用户的方法,它替换老本的db.addUser()用户创建方法。

2、当前在admin数据库命名下,通过以下命令查看admin数据库命名下的所有用户信息:

show users
或者

db.system.users.find()
此时,如果用户列表包含刚刚创建的admin用户,表示用户创建成功。

3、开启配置文件的auth属性,并重新启动mongoDB

通过命令查询mongo的PID:

ps aux | grep mongo
root      5204  0.3  3.4 687224 66652         Sl   15:28   0:09 ./mongod -f mongodb.conf

5024代表当前启动的mongo进程的PID,通过kill命令结束该进程:

kill -2 5024
注意:千万不要通过kill -9 PID来结束进程,通过kill -2 PID或者通过db.shutdownServer()完成操作
再次启动mongoDB:

./mongod -f mongodb.conf

4、连接mongoDB

./mongo --port 27017
连接成功后,命令行会变为">"符号的起始符号

5、认证用户,返回1时表示认证成功

db.auth('admin','admin')
认证用户语法:db.auth(username,pwd),两个参数分别是:username为用户名,pwd为密码。用户名和密码均为开始通过db.createUser方法创建用户时指定的用户名和密码。

6、创建操作权限用户

admin用户,前边已经提到,指定它的role为userAdminAnyDatabase,只有管理用户权限,我们只能通过它来创建用户等一系列用户管理操作。无法进行mongoDB数据库操作,例如利用下列命令,查看当前数据库命名下的所有集合,会报错:

show collections
此时,我们需要切换到具体的数据库命名下,再次利用db.createUser方法,为单个数据库命名空间创建用户。

我们为eugene数据库命名空间创建用户eugene,密码为eugene:

use eugene
db.createUser( 
    { 
        user: "eugene",
        pwd: "eugene", 
        roles: [ 
            { role: "readWrite", db: "eugene" } 
        ]   
    } 
)

 roles中的role可指定的具体值为:read, readWrite, dbAdmin, root
这里,我们指定eugene用户拥有eugene数据库命名的读写权限。

7、在eugene数据库命名空间下,认证拥有数据库操作权限的用户

db.auth("eugene","eugene")
此时,已拥有了eugene数据库的读写权限,为所欲为吧!


创建用户的官方文档:http://docs.mongodb.org/manual/core/authorization/

权限说明的官方文档:

http://docs.mongodb.org/manual/core/authorization/

http://docs.mongodb.org/manual/reference/built-in-roles/


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值