要在MongoDB中驗證用戶端,必須先在MongoDB新增相應的使用者。
要新增使用者,可使用MongoDB提供的db.createUser()方法。 新增使用者時,可以為使用者分配角色以授予許可權。
注意:在資料庫中建立的第一個使用者應該是具有管理其他使用者的許可權的使用者管理員。
還可以更新現有使用者,例如更改密碼並授予或復原角色。有關使用者管理方法的完整列表,請參閱使用者管理。
新增使用者時,可以在特定資料庫中建立使用者。該資料庫是使用者的認證的資料庫。
使用者可以跨不同資料庫擁有許可權; 即使用者的許可權不限於認證資料庫。 通過分配給其他資料庫中的使用者角色,在一個資料庫中建立的使用者可以擁有對其他資料庫的操作許可權。 有關角色的更多資訊,請參閱基於角色的存取控制。
使用者名和認證資料庫作為該使用者的唯一識別符號。 也就是說,如果兩個使用者具有相同的名稱,但是在不同的資料庫中建立,則它們是兩個不同的使用者。 如果您打算擁有具有多個資料庫許可權的單個使用者,請在適用的資料庫中建立具有角色的單個使用者,而不是在不同資料庫中多次建立使用者。
要驗證使用者,也可以 -
-u
,-p
,--authenticationDatabase
)要進行身份驗證,用戶端必須對使用者的身份驗證資料庫進行身份驗證。
例如,如果使用 mongo shell作為用戶端,則可以使用--authenticationDatabase
選項為使用者指定身份驗證資料庫。
要為分片叢集建立使用者,請連線到 mongos 範例並新增使用者。 用戶端然後通過 mongos 範例驗證這些使用者。
Mongo 2.6 版本中更改:MongoDB將這些分片的群集使用者資料儲存在組態伺服器的管理資料庫中。 以前,用於對資料庫的主分片上駐留在分片叢集上的資料庫進行身份驗證的憑據。
分片本地使用者
某些維護操作(如:cleanupOrphaned
,compact
,rs.reconfig()
)需要直接連線到分片叢集中的特定分片。要執行這些操作,必須直接連線到分片,並作為分片本地管理使用者進行身份驗證。
要建立分片本地管理使用者,請直接連線到分片並建立使用者。 MongoDB將分片本地使用者儲存在分片本身的admin
資料庫中。
這些分片本地使用者完全獨立於通過mongos新增到分片叢集的使用者。 分片本地使用者是分片原生的,並且是無法存取的。
與分片的直接連線只能用於特定於分片的維護和組態。 一般來說,用戶端應通過mongos連線到分片的群集。