mongoDB 3.0安全权限访问控制

来源:互联网 发布:大数据 应用 编辑:程序博客网 时间:2024/05/20 20:22

关于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 mongoroot      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 eugenedb.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
原创粉丝点击