天天看點

MongoDb使用者權限控制

有朋友在評論裡問到關于mongodb的auth的問題,我找資料研究了一下,把操作過程記錄了下來。

Mongodb像oracle一樣,有着嚴格的使用者、角色權限控制。具體可以參照官網文檔:https://docs.mongodb.com/manual/reference/method/db.createUser/

Mongodb建立使用者的文法在不用的版本之間還是不一樣的。我這裡使用的版本3.0.6。版本3.0之前使用的是db.addUser(),但3.0之後使用的是db.createUser()。3.0後版本中再使用db.addUser()會報如下錯誤:

如果資料庫中還沒有添加任何使用者,要想新建立一個使用者,要先把auth認證停掉,在進入資料庫,也就是讓auth=false。

登入資料庫,隻能看到一個庫,看不到admin庫:

現在需要建立一個帳号,該賬号需要有grant權限,即:賬号管理的授權權限。注意一點,mongodb帳号是跟着庫走的,是以在指定庫裡授權,必須也在指定庫裡驗證(auth)

可以看到建立了一個使用者dba,密碼dba,擁有admin庫的userAdminAnyDatabase角色。下面看一下mongodb中的内置角色:

看一下具體的角色定義:

我們打開auth參數,來驗證一下。

可以看到,建立的dba使用者已經驗證成功。接下來我在建立兩個使用者,驗證一下其他角色權限。建立一個隻讀使用者,一個讀寫使用者。

在test庫中建立一個集合,驗證一下這兩個使用者權限:

注意:Mongodb使用者是跟着資料庫密切相關的,在哪個庫授權的使用者就需要去哪個庫下面進行認證。