[MongoDB]開啟權限管理功能

  • 10723
  • 0
  • 2014-07-09

[MongoDB]開啟權限管理功能

MongoDB於Defaul的設置下是沒有開啟權限管理的功能,也就是說 只要連接的上服務的位置都能直接操作,這是非常危險的。

以下將說明如何開啟以帳號來驗證身分功能。(以下若沒特別說明的命令環境都為 Mongo Shell)

 

概要

要開啟身分認證的權限管理時,須先建立最高權限的管理者身分,設定完後,在於 配置檔內加入驗證參數,並重啟MongoDB 服務。

 

實際操作如下

 

1.需先切到admin Database,因為admin為系統默認的最高權限設置。

   1: MongoDB shell version: 2.6.0
   2: connecting to: test 
   3: > use admin
  • 命令過程如下

 

2.建立最高權限

  • 命令如下:
       2:  {
       3:      user:"sa",
       4:      pwd:"1111",
       5:     roles:
       6:      [ 
       7:         {
       8:          role:"userAdminAnyDatabase",
       9:          db:"admin"
      10:          }
      11:      ]
      12:  }
      13: )
    •        1: >db.createUser(

2014-04-16_1

 

3.離開Mongo Shell

  •    1:> exit

 

4.修改配置檔(每個人的設定檔設置可能不同喔),開啟身分驗證

2014-04-16_2

 

5.重啟MongoDB服務

  • 停止 MongoDB服務,以身分管理員開啟cmd,命令如下
    •    1: net stop MongoDB
  • 開始 MongoDB服務,以身分管理員開啟cmd,命令如下
    •    1: net start MongoDB

2014-04-16_3

 

6.登入Mongo Shell

2014-04-16_4

 

7.此時則需要身分驗證,若不驗證的話將無法使用對資料進行操作,包含查詢:

   1: > db.auth('sa','1111')
   2: 1
   3: > show dbs
   4: admin 
   5: 0.078GB
   6: local 0.078GB
   7: wfm 0.078GB
  • 將建立好的最高權限(往上參考第2點)輸入驗證,之後再進行簡單查詢,測驗是否能對資料庫做簡單查詢

 

8.建個個別身分及權限

   1: > db.auth('sa','1111')
   2: 1
   3: > use wfm
   4: switched to db 
   5: wfm
   6: > db.addUser('sa','1111')
   7: WARNING: The 'addUser' shell helper 
   8: is DEPRECATED. Please use 'createUser’
   9: instead
  10: Successfully added user: {
  11:  "user" :"sa",
  12:  "roles" : [ "dbOwner" ] }
 
  • 接續以上及前一篇文章有建立一個wfm Database在此 給予一個身分有權限來操作此DB,操作命令過程如下

 

 

 

ps:注意: role:"userAdminAnyDatabase"這的意思是這個角色的權限

userAdminAnyDatabase只能管理使用者並無法使用DB內的操作權限喔

dbAdminAnyDatabase或dbAdmin才可以。

 

困惑: createUser、 addUser 這個方法,我實在分不清楚。第8點我用createUser無法建立,用addUser 就可以,但有注意到嗎?系統不贊同這個方法。

         小伙以為兩個其實功能是一樣的,只是參數不太相同而已addUser 好像是舊版的用法,實際上的差別有人能說說嗎?

         感謝。

 

By-藍小伙