一小白瞎整mongodb,認證部分被折磨的慘不忍睹,看廝可憐,特查了一下文檔,淺顯地總結一下mongodb認證(authentication)與受權(authorization)的聯繫。mongodb
建立的全部用戶都在admin.庫下的system.users集合下,有以下字段:數據庫
其中的db字段是用於authentication用的,也就是鏈接mongodb的時候,指定的--authenticationDatabase選項的值。blog
roles字段裏面的db是指這個用戶具體對db具備什麼樣的角色,是隻讀,只寫,仍是讀寫,也就是受權。這個db跟最外面的db沒有任何關係,徹底是用來指定權限的。文檔
鏈接Mongodb的時候,除了須要用戶名,密碼,還須要指定這個用戶的認證db。爲何須要指定這個認證db?是由於Mongodb容許存在多個同名的用戶存在,但同名的用戶認證db必須不能至關,以下:io
切換到其餘db,能夠建立同名用戶:權限
上圖建立了一個用戶名密碼爲"in_admin"的用戶,用haha數據庫認證,對haha數據庫具備讀寫權限,除此以外,沒有其餘數據庫的任何執行權限。密碼
補充一點就是,認證的db字段不能在建立用戶時指定,它的值是你建立用戶時所在的那個db。im