1. 程式人生 > >mongodb的認證(authentication)與授權(authorization)

mongodb的認證(authentication)與授權(authorization)

一小白瞎整mongodb,認證部分被折磨的慘不忍睹,看廝可憐,特查了一下文件,淺顯地總結一下mongodb認證(authentication)與授權(authorization)的聯絡。

建立的所有使用者都在admin.庫下的system.users集合下,有如下欄位:

其中的db欄位是用於authentication用的,也就是連線mongodb的時候,指定的--authenticationDatabase選項的值。

roles欄位裡面的db是指這個使用者具體對db具有什麼樣的角色,是隻讀,只寫,還是讀寫,也就是授權。這個db跟最外面的db沒有任何關係,完全是用來指定許可權的。

 

連線Mongodb的時候,除了需要使用者名稱,密碼,還需要指定這個使用者的認證db。為什麼需要指定這個認證db?是因為Mongodb允許存在多個同名的使用者存在,但同名的使用者認證db必須不能相當,如下:

 

切換到其他db,可以建立同名使用者:

上圖建立了一個使用者名稱密碼為"in_admin"的使用者,用haha資料庫認證,對haha資料庫具有讀寫許可權,除此之外,沒有其他資料庫的任何執行許可權。

補充一點就是,認證的db欄位不能在建立使用者時指定,它的值是你建立使用者時所在的那個db。