不多说,直接上干货!

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

前期博客

Ubuntu14.04下Mongodb(在线安装方式|apt-get)安装部署步骤(图文详解)(博主推荐)

mongodb远程连接配置分为以下4步:

1、首先修改mongodb的配置文件 让其监听所有外网ip

编辑文件:/etc/mongodb.conf

如何做到Ubuntu14.04下的mongdb远程访问?(图文详解)-LMLPHP

如何做到Ubuntu14.04下的mongdb远程访问?(图文详解)-LMLPHP

如何做到Ubuntu14.04下的mongdb远程访问?(图文详解)-LMLPHP

  修改为,如下

如何做到Ubuntu14.04下的mongdb远程访问?(图文详解)-LMLPHP

  修改的内容是:

bind_ip = 0.0.0.0
port =
auth = true

  MongoDB有两种用户,一种是admin用户(这里以root为例),能查看所有数据库;另一种数据库用户(这里以dbuser为例),只能查看特定数据库。 

  首先输入mongo进入MongoDB shell命令模式:

如何做到Ubuntu14.04下的mongdb远程访问?(图文详解)-LMLPHP

root@zhouls-virtual-machine:~# mongo
MongoDB shell version: 2.4.
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
>

  2、在admin数据库中添加root用户,在test数据库中添加dbuser用户

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

如何做到Ubuntu14.04下的mongdb远程访问?(图文详解)-LMLPHP

> use admin
switched to db admin
> db.addUser('root','root')
{
"user" : "root",
"readOnly" : false,
"pwd" : "2a8025f0885adad5a8ce0044070032b3",
"_id" : ObjectId("59315897ebbf85f0bd54ef47")
}
> use test
switched to db test
> db.addUser('dbuser','dbuser')
{
"user" : "dbuser",
"readOnly" : false,
"pwd" : "e8f2818f5400a2a6cdc164b313abd49f",
"_id" : ObjectId("593158b9ebbf85f0bd54ef48")
}
>

  MongoDB所有的用户信息都是存储在admin数据库中system.users表中,截图如下:

如何做到Ubuntu14.04下的mongdb远程访问?(图文详解)-LMLPHP

如何做到Ubuntu14.04下的mongdb远程访问?(图文详解)-LMLPHP

> ^C
bye
root@zhouls-virtual-machine:~#

  3、开启与关闭mongodb服务

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

service mongodb start #开启MongoDB服务

如何做到Ubuntu14.04下的mongdb远程访问?(图文详解)-LMLPHP

root@zhouls-virtual-machine:~# service mongodb stop
mongodb stop/waiting
root@zhouls-virtual-machine:~# service mongodb start
mongodb start/running, process
root@zhouls-virtual-machine:~#

4、测试用户权限是否正常开启

  注意:输入mongo进入shell命令模式,默认连接的数据库是test数据库。
  试图查看test数据库的所有集合,发现查看失败;验证test数据库用户dbuser;再次查看test所有集合,发现查看成功。截图如下:

如何做到Ubuntu14.04下的mongdb远程访问?(图文详解)-LMLPHP

root@zhouls-virtual-machine:~# mongo
MongoDB shell version: 2.4.
connecting to: test
> show collections
Fri Jun ::20.414 error: {
"$err" : "not authorized for query on test.system.namespaces",
"code" :
} at src/mongo/shell/query.js:
> db.auth('dbuser','dbuser') > show collections
system.indexes
system.users
>

5、防火墙开放27017端口

如何做到Ubuntu14.04下的mongdb远程访问?(图文详解)-LMLPHP

root@zhouls-virtual-machine:~# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport  -j ACCEPT
root@zhouls-virtual-machine:~#

6、测试(桥接模式)

如何做到Ubuntu14.04下的mongdb远程访问?(图文详解)-LMLPHP

root@zhouls-virtual-machine:~# mongo ****:/admin -u root -p root
MongoDB shell version: 2.4.
connecting to: *****:/admin
> show dbs
admin .203125GB
local .078125GB
test .203125GB
>

  或者

6、测试(NAT模式的静态ip)

如何做到Ubuntu14.04下的mongdb远程访问?(图文详解)-LMLPHP

如何做到Ubuntu14.04下的mongdb远程访问?(图文详解)-LMLPHP

root@zhouls-virtual-machine:~# mongo 192.168.80.31:27017/admin -u root -p root
MongoDB shell version: 2.4.
connecting to: 192.168.80.31:/admin
> show dbs
admin .203125GB
local .078125GB
test .203125GB
>
05-11 11:04
查看更多