Ubuntu下开启MongoDB用户权限

大数据学习路线图

【版权声明:本指南为厦门大学林子雨编著的《大数据技术原理与应用》教材配套学习资料,版权所有,转载请注明出处,请勿用于商业用途】

本教程详细指导大家如何开启并设置用户权限。MongoDB默认是没有开启用户权限的,如果直接在公网服务器上如此搭建MongoDB,那么所有人都可以直接访问并修改数据库数据了。 其实MongoDB本身有非常详细的安全配置准则,显然开发者也是想到了,然而他是将安全的任务推给用户去解决,这本身的策略就是偏向易用性的,对于安全性,则得靠边站了。

MongoDB有两种用户,一种是admin用户(这里以root为例),能查看所有数据库;另一种数据库用户(这里以dbuser为例),只能查看特定数据库。
首先输入mongo进入MongoDB shell命令模式:
1、在admin表中添加root用户,在test表中添加dbuser用户

use admin
db.addUser('root','123') #用户名:root,密码:123
use test
db.addUser('dbuser','123') #用户名:dbuser,密码:123

MongoDB所有的用户信息都是存储在admin数据库中system.users集合中,截图如下:
QQ截图20160712085246
2、修改/etc/mongodb.conf,设置auth=true
如果你是参考本站另一篇教程使用离线方式安装的MongoDB,请将/etc/mongodb.conf替换成/data/mongodb.conf

sudo vim /etc/mongodb.conf

/etc/mongodb.conf文件中本来就有配置auth=true,只需要删除前面的“#”即可。截图如下:
配置auth=true
3、重启MongoDB

service mongodb stop  #停止MongoDB服务
service mongodb start #开启MongoDB服务

4、测试用户权限是否正常开启
试图查看test数据库的所有集合,发现查看失败;验证test数据库用户dbuser;再次查看test所有集合,发现查看成功。截图如下:
验证test成功
试图查看School数据库的所有集合,发现查看失败,因为dbuser是test数据库的用户,无法验证School数据库;切换到admin数据库,验证root用户名;再切换回School数据库,查看其所有集合,发现查看成功。截图如下:
验证rootSchool查看成功
这里需要指出的是,验证用户不是切换用户,只要验证过用户,就拥有了对该数据库的操作权限,如我先验证了root用户,再验证dbuser用户(test数据库的用户),依然可以操作School数据库,因为验证过root用户,仅对当次shell模式有效,退出shell之后再进入shell需要重新验证。