要在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连接到分片的群集。