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
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

MongoDB所有的用户信息都是存储在admin数据库中system.users表中,截图如下: 
QQ截图20160712085246 
2、修改/etc/mongodb.conf,设置auth=true

sudo vim /etc/mongodb.conf
  • 1
  • 1

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

service mongodb stop  #停止MongoDB服务(因为MongoDB是随开机是自启动的)
service mongodb start #开启MongoDB服务
  • 1
  • 2
  • 1
  • 2

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

展开阅读全文

没有更多推荐了,返回首页