要在MongoDB中驗證客戶端,必須先在MongoDB添加相應(yīng)的用戶。
要添加用戶,可使用MongoDB提供的db.createUser()方法。 添加用戶時,可以為用戶分配角色以授予權(quán)限。
注意:在數(shù)據(jù)庫中創(chuàng)建的第一個用戶應(yīng)該是具有管理其他用戶的權(quán)限的用戶管理員。
還可以更新現(xiàn)有用戶,例如更改密碼并授予或撤銷角色。有關(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ù)庫的操作權(quán)限。 有關(guān)角色的更多信息,請參閱基于角色的訪問控制。
用戶名和認證數(shù)據(jù)庫作為該用戶的唯一標識符。 也就是說,如果兩個用戶具有相同的名稱,但是在不同的數(shù)據(jù)庫中創(chuàng)建,則它們是兩個不同的用戶。 如果您打算擁有具有多個數(shù)據(jù)庫權(quán)限的單個用戶,請在適用的數(shù)據(jù)庫中創(chuàng)建具有角色的單個用戶,而不是在不同數(shù)據(jù)庫中多次創(chuàng)建用戶。
要驗證用戶,也可以 -
-u,-p,--authenticationDatabase)要進行身份驗證,客戶端必須對用戶的身份驗證數(shù)據(jù)庫進行身份驗證。
例如,如果使用 mongo shell作為客戶端,則可以使用--authenticationDatabase選項為用戶指定身份驗證數(shù)據(jù)庫。
要為分片集群創(chuàng)建用戶,請連接到 mongos 實例并添加用戶。 客戶端然后通過 mongos 實例驗證這些用戶。
Mongo 2.6 版本中更改:MongoDB將這些分片的群集用戶數(shù)據(jù)存儲在配置服務(wù)器的管理數(shù)據(jù)庫中。 以前,用于對數(shù)據(jù)庫的主分片上駐留在分片集群上的數(shù)據(jù)庫進行身份驗證的憑據(jù)。
分片本地用戶
某些維護操作(如:cleanupOrphaned,compact,rs.reconfig())需要直接連接到分片集群中的特定分片。要執(zhí)行這些操作,必須直接連接到分片,并作為分片本地管理用戶進行身份驗證。
要創(chuàng)建分片本地管理用戶,請直接連接到分片并創(chuàng)建用戶。 MongoDB將分片本地用戶存儲在分片本身的admin數(shù)據(jù)庫中。
這些分片本地用戶完全獨立于通過mongos添加到分片集群的用戶。 分片本地用戶是分片本地的,并且是無法訪問的。
與分片的直接連接只能用于特定于分片的維護和配置。 一般來說,客戶端應(yīng)通過mongos連接到分片的群集。