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