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表中,截圖如下:
2、修改/etc/mongodb.conf,設定auth=true
sudo vim /etc/mongodb.conf
- 1
- 1
/etc/mongodb.conf檔案中本來就有配置auth=true,只需要刪除前面的“#”即可。截圖如下:
3、重啟MongoDB
service mongodb stop #停止MongoDB服務(因為MongoDB是隨開機是自啟動的)
service mongodb start #開啟MongoDB服務
- 1
- 2
- 1
- 2
4、測試使用者許可權是否正常開啟
試圖檢視test資料庫的所有集合,發現檢視失敗;驗證test資料庫使用者dbuser;再次檢視test所有集合,發現檢視成功。截圖如下:
試圖檢視School資料庫的所有集合,發現檢視失敗,因為dbuser是test資料庫的使用者,無法驗證School資料庫;切換到admin資料庫,驗證root使用者名稱;再切換回School資料庫,檢視其所有集合,發現檢視成功。截圖如下:
這裡需要指出的是,驗證使用者不是切換使用者,只要驗證過使用者,就擁有了對該資料庫的操作許可權,如我先驗證了root使用者,再驗證dbuser使用者(test資料庫的使用者),依然可以操作School資料庫,因為驗證過root使用者,僅對當次shell模式有效,退出shell之後再進入shell需要重新驗證。