????要在MongoDB中對客戶端進行身份驗證患雏,您必須將相應(yīng)的用戶添加到MongoDB郭毕。
????為了添加一個用戶浇辜,MongoDB提供了這個db.createUser()方法朋魔。添加用戶時岖研,可以將角色分配給用戶以授予權(quán)限。
在數(shù)據(jù)庫中創(chuàng)建的第一個用戶應(yīng)該是具有管理其他用戶權(quán)限的用戶管理員
? ??認證數(shù)據(jù)庫用戶相關(guān)
????添加用戶時警检,您可以在特定數(shù)據(jù)庫中創(chuàng)建用戶孙援。這個數(shù)據(jù)庫是用戶的認證數(shù)據(jù)庫。
????用戶可以擁有不同數(shù)據(jù)庫的權(quán)限;?
????也就是說扇雕,用戶的權(quán)限不限于其身份驗證數(shù)據(jù)庫拓售。
????通過分配給其他數(shù)據(jù)庫中的用戶角色,在一個數(shù)據(jù)庫中創(chuàng)建的用戶可以擁有對其他數(shù)據(jù)庫執(zhí)行操作的權(quán)限镶奉。
????用戶名和認證數(shù)據(jù)庫充當該用戶的唯一標識符础淤。
????也就是說崭放,如果兩個用戶具有相同的名稱但是在不同的數(shù)據(jù)庫中創(chuàng)建,則它們是兩個單獨的用戶值骇。
????如果您打算讓一個用戶擁有多個數(shù)據(jù)庫的權(quán)限莹菱,請在適用的數(shù)據(jù)庫中創(chuàng)建包含角色的單個用戶,而不是在不同的數(shù)據(jù)庫中多次創(chuàng)建用戶吱瘩。
????集中用戶數(shù)據(jù)
? ??在版本2.6中更改道伟。
????MongoDB將所有用戶信息(包括name,password和)存儲在?數(shù)據(jù)庫中的system.users集合中使碾。user'sauthentication?databaseadmin
????請勿直接訪問此集合蜜徽,而應(yīng)使用用戶管理命令。
????分片群集用戶
????要為分片群集創(chuàng)建用戶票摇,請連接到mongos?實例并添加用戶拘鞋。然后,客戶端通過mongos實例對這些用戶進行身份驗證?矢门。
????碎片本地用戶
????然而盆色,一些維護操作,如cleanupOrphaned祟剔,?compact隔躲,rs.reconfig(),需要分片集群特定的碎片直接連接物延。要執(zhí)行這些操作宣旱,您必須直接連接到分片并作為分片本地?管理用戶進行身份驗證。
????要創(chuàng)建分片本地管理用戶叛薯,請直接連接到分片并創(chuàng)建用戶浑吟。MongoDB將分片本地用戶存儲在分片admin?本身的數(shù)據(jù)庫中。
????這些分片本地用戶完全獨立于通過添加到分片群集的用戶mongos耗溜。碎片本地用戶是碎片的本地用戶组力,無法訪問mongos。
????直接連接到碎片應(yīng)該只用于特定于碎片的維護和配置抖拴。一般來說忿项,客戶端應(yīng)該通過連接到分片群集mongos。
????本地主機異常
????本地主機例外允許您啟用訪問控制城舞,然后在系統(tǒng)中創(chuàng)建第一個用戶轩触。
????在本地主機例外情況下,啟用訪問控制后家夺,連接到本地主機接口并在admin數(shù)據(jù)庫中創(chuàng)建第一個用戶脱柱。第一個用戶必須有權(quán)創(chuàng)建其他用戶,比如與用戶?userAdmin或userAdminAnyDatabase角色拉馋。
????版本3.4中更改:?MongoDB 3.4擴展了localhost異常以允許執(zhí)行該?db.createRole()方法榨为。此方法允許用戶通過LDAP授權(quán)在MongoDB內(nèi)創(chuàng)建映射到LDAP中定義的角色的角色惨好。有關(guān)更多信息,請參閱LDAP授權(quán)随闺。
????在版本3.0中更改:本地主機異常已更改日川,以便這些連接只能?訪問admin?數(shù)據(jù)庫上的第一個用戶。在以前的版本中矩乐,使用localhost異常獲得訪問權(quán)限的連接對MongoDB實例具有不受限制的訪問權(quán)限龄句。
????localhost異常僅適用于在MongoDB實例中沒有創(chuàng)建用戶的情況。
????在分片群集的情況下散罕,本地主機例外將單獨應(yīng)用于每個分片以及整個群集分歇。一旦創(chuàng)建了分片群集并通過mongos實例添加用戶管理員,您仍然必須防止未經(jīng)授權(quán)訪問單個分片欧漱。按照以下步驟為集群中的每個分片進行操作:
????????創(chuàng)建一個管理用戶职抡,或者
????????啟動時禁用localhost異常。要禁用本地主機例外误甚,請將enableLocalhostAuthBypass參數(shù)設(shè)置為0缚甩。