不多說,直接上干貨!
本教程詳細指導大家如何開啟並設置用戶權限。MongoDB默認是沒有開啟用戶權限的,如果直接在公網服務器上如此搭建MongoDB,那么所有人都可以直接訪問並修改數據庫數據了。 其實MongoDB本身有非常詳細的安全配置准則,顯然開發者也是想到了,然而他是將安全的任務推給用戶去解決,這本身的策略就是偏向易用性的,對於安全性,則得靠邊站了。
前期博客
Ubuntu14.04下Mongodb(在線安裝方式|apt-get)安裝部署步驟(圖文詳解)(博主推薦)
mongodb遠程連接配置分為以下4步:
1、首先修改mongodb的配置文件 讓其監聽所有外網ip
編輯文件:/etc/mongodb.conf



修改為,如下

修改的內容是:
bind_ip = 0.0.0.0 port = 27017 auth = true
MongoDB有兩種用戶,一種是admin用戶(這里以root為例),能查看所有數據庫;另一種數據庫用戶(這里以dbuser為例),只能查看特定數據庫。
首先輸入mongo進入MongoDB shell命令模式:

root@zhouls-virtual-machine:~# mongo MongoDB shell version: 2.4.9 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

> 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表中,截圖如下:


> ^C bye root@zhouls-virtual-machine:~#
3、開啟與關閉mongodb服務
service mongodb stop #停止MongoDB服務(因為MongoDB是隨開機是自啟動的)
service mongodb start #開啟MongoDB服務

root@zhouls-virtual-machine:~# service mongodb stop mongodb stop/waiting root@zhouls-virtual-machine:~# service mongodb start mongodb start/running, process 3809 root@zhouls-virtual-machine:~#
4、測試用戶權限是否正常開啟
注意:輸入mongo進入shell命令模式,默認連接的數據庫是test數據庫。
試圖查看test數據庫的所有集合,發現查看失敗;驗證test數據庫用戶dbuser;再次查看test所有集合,發現查看成功。截圖如下:

root@zhouls-virtual-machine:~# mongo MongoDB shell version: 2.4.9 connecting to: test > show collections Fri Jun 2 20:30:20.414 error: { "$err" : "not authorized for query on test.system.namespaces", "code" : 16550 } at src/mongo/shell/query.js:128 > db.auth('dbuser','dbuser') 1 > show collections system.indexes system.users >
5、防火牆開放27017端口
root@zhouls-virtual-machine:~# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 27017 -j ACCEPT root@zhouls-virtual-machine:~#
6、測試(橋接模式)

root@zhouls-virtual-machine:~# mongo ****:27017/admin -u root -p root MongoDB shell version: 2.4.9 connecting to: *****:27017/admin > show dbs admin 0.203125GB local 0.078125GB test 0.203125GB >
或者
6、測試(NAT模式的靜態ip)


root@zhouls-virtual-machine:~# mongo 192.168.80.31:27017/admin -u root -p root MongoDB shell version: 2.4.9 connecting to: 192.168.80.31:27017/admin > show dbs admin 0.203125GB local 0.078125GB test 0.203125GB >
