Mongodb的權限管理

1.爲什麼要進行權限管理的設置

剛安裝完畢的mongodb默認不使用權限認證方式啓動,與MySQL不同,mongodb在安裝的時候並沒有設置權限,然而公網運行系統需要設置權限以保證數據安全,所以我們要學習mongodb的權限管理

2.mongodb的權限管理方案

  • MongoDB是沒有默認管理員賬號,所以要先添加管理員賬號,並且mongodb服務器需要在運行的時候開啓驗證模式
  • 用戶只能在用戶所在數據庫登錄(創建用戶的數據庫),包括管理員賬號。
  • 管理員可以管理所有數據庫,但是不能直接管理其他數據庫,要先認證後纔可以。

3.mongodb超級管理員賬號的創建

3.1. 以權限認證的方式啓動mongodb數據庫

sudo mongod -auth

啓動之後在啓動信息中會有如下信息,說明mongodb以權限認證的方式啓動成功

[initandlisten] options: { security: { authorization: "enabled" } }

3.2. 創建超級用戶 使用admin數據庫(超級管理員賬號必須創建在該數據庫上)

use admin

創建超級用戶

db.createUser({"user":"python","pwd":"python","roles":["root"]})

創建成功會顯示如下信息

Successfully added user: { "user" : "python", "roles" : [ "root" ] }

3.3 退出客戶端再次登錄驗證 此時再使用數據庫各命令的時候會報權限錯誤,需要認證才能執行相應操作

use admin
db.auth('python','python')

python用戶是創建在admin數據庫上的所以必須來到admin數據庫上進行認證,認證成功會返回1,失敗返回0

4 創建普通用戶

4.1選擇需要創建用戶的數據庫

use test1

4.2 在使用的數據庫上創建普通用戶

db.createUser("user":"user1", "pwd":"pwd1", roles:["read"])
創建普通用戶user1,該用戶在test1上的權限是隻讀
db.createUser("user":"user1", "pwd":"pwd1", roles:["readWrite"])
創建普通用戶user1,該用戶在test1上的權限是讀寫

4.3 在其他數據庫上創建普通用戶

use admin
db.createUser({"user":"python1", "pwd":"python1", roles:[{"role":"read","db":"dbname1"},{"role":"readWrite","db":"dbname2"}
]})

在admin上創建python1用戶,python1用戶的權限有兩個,一個再dbname1上的只讀,另一個是在dbname2上的讀寫

5.查看創建的用戶

show users
{
    "_id" : "admin.python",
    "user" : "python",
    "db" : "admin",
    "roles" : [
        {
            "role" : "root",
            "db" : "admin"
        }
    ]
}

6.刪除用戶

db.dropUser('python')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章