[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(
3.離開Mongo Shell
-
1:> exit
4.修改配置檔(每個人的設定檔設置可能不同喔),開啟身分驗證
5.重啟MongoDB服務
-
停止 MongoDB服務,以身分管理員開啟cmd,命令如下
- 1: net stop MongoDB
-
開始 MongoDB服務,以身分管理員開啟cmd,命令如下
- 1: net start MongoDB
6.登入Mongo Shell
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-藍小伙