笔者最近看了MongoDB的访问控制的书并查看一些资料,总结了用户权限设置的一些资料,特地分享给大家。
MongoDB中有两个默认的特殊数据库,admin和local,不过目测local没什么用,admin的用户是超级用户。MongoDB没有默认的管理
员账号,要首先添加管理员帐号再开启权限认证。在没有开启权限验证之前,可以随便访问操作数据库。
下面介绍一下用户权限的设置过程。
提醒:db.addUser()方法在version2.6的时候被替换成了db.createUser()和db.updateUser()。
前提:按照前一篇博客(unbuntu下mongodb的安装,http://blog.csdn.net/u010858605/article/details/50957610)配置好mongodb,
mongodb版本为3.2.
首先介绍admin用户的设置:
1.在未设置--auth参数的情况下,创建一个admin用户,用户名和密码均为gleradmin,权限为root。
添加了admin用户后,show collections会看到admin数据库下的集合信息。
2.关闭mongodb服务,在启动服务命令中加入—auth参数,启动服务。这时,我们再进入admin数据库查看它的集合信息就会报错,很显然,是权限不够。
3.输入命令:use admin(目的是保证在admin数据库下操作)db.auth('gleradmin','gleradmin') 返回值是1,表明登录成功,0则失败。
接下来介绍普通用户的创建。
4.创建一个名为testcol的数据库,并新建一个集合。
5.输入命令:show collections查看testcol中的集合
6.在testcol数据库中增加普通用户gler123,权限为readWrite。
7.输入命令:use admin和db.system.users.find() 可以看到存在两个用户,一个是admin数据库的超级用户,一个是刚刚创建的testcol数
据库的普通用户。
8.Ctrl+C或者输入命令exit退出,重新进入mongo。
9.输入命令:use testcol 和show collections ,发现没有权限。
10.使用刚才创建的普通用户登录testcol数据库,再查看集合信息,成功了。