MongoDB用戶
要在MongoDB中驗證客戶端,必須先在MongoDB添加相應的用戶。
1.用戶管理接口
要添加用戶,可使用MongoDB提供的db.createUser()方法。 添加用戶時,可以爲用戶分配角色以授予權限。
注意:在數據庫中創建的第一個用戶應該是具有管理其他用戶的權限的用戶管理員。
還可以更新現有用戶,例如更改密碼並授予或撤銷角色。有關用戶管理方法的完整列表,請參閱用戶管理。
2.驗證數據庫
添加用戶時,可以在特定數據庫中創建用戶。該數據庫是用戶的認證的數據庫。
用戶可以跨不同數據庫擁有權限; 即用戶的權限不限於認證數據庫。 通過分配給其他數據庫中的用戶角色,在一個數據庫中創建的用戶可以擁有對其他數據庫的操作權限。 有關角色的更多信息,請參閱基於角色的訪問控制。
用戶名和認證數據庫作爲該用戶的唯一標識符。 也就是說,如果兩個用戶具有相同的名稱,但是在不同的數據庫中創建,則它們是兩個不同的用戶。 如果您打算擁有具有多個數據庫權限的單個用戶,請在適用的數據庫中創建具有角色的單個用戶,而不是在不同數據庫中多次創建用戶。
3.認證用戶
要驗證用戶,也可以 -
- 在連接到 mongod 或 mongos 實例時使用命令行身份驗證選項(例如:
-u
,-p
,--authenticationDatabase
) - 先連接到 mongod 或 mongos 實例,然後針對身份驗證數據庫運行 authenticate 命令或db.auth()方法。
要進行身份驗證,客戶端必須對用戶的身份驗證數據庫進行身份驗證。
例如,如果使用 mongo shell作爲客戶端,則可以使用--authenticationDatabase
選項爲用戶指定身份驗證數據庫。
4. 分片羣集用戶
要爲分片集羣創建用戶,請連接到 mongos 實例並添加用戶。 客戶端然後通過 mongos 實例驗證這些用戶。
Mongo 2.6 版本中更改:MongoDB將這些分片的羣集用戶數據存儲在配置服務器的管理數據庫中。 以前,用於對數據庫的主分片上駐留在分片集羣上的數據庫進行身份驗證的憑據。
分片本地用戶
某些維護操作(如:cleanupOrphaned
,compact
,rs.reconfig()
)需要直接連接到分片集羣中的特定分片。要執行這些操作,必須直接連接到分片,並作爲分片本地管理用戶進行身份驗證。
要創建分片本地管理用戶,請直接連接到分片並創建用戶。 MongoDB將分片本地用戶存儲在分片本身的admin
數據庫中。
這些分片本地用戶完全獨立於通過mongos添加到分片集羣的用戶。 分片本地用戶是分片本地的,並且是無法訪問的。
與分片的直接連接只能用於特定於分片的維護和配置。 一般來說,客戶端應通過mongos連接到分片的羣集。