1. 程式人生 > >Ubuntu下開啟MongoDB使用者許可權

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需要重新驗證。