如何做到Ubuntu14.04下的mongdb遠程訪問?(圖文詳解)


 

 

  不多說,直接上干貨!

 

 

  本教程詳細指導大家如何開啟並設置用戶權限。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
> 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM