MongoDB

关注公众号 jb51net

关闭
首页 > 数据库 > MongoDB > MongoDB权限管理

MongoDB数据库权限管理详解

作者:社会主义接班人

本文详细讲解了MongoDB数据库权限管理的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

前几天网友问MongoDB数据库权限方面的问题。当时大致的了解了一下,这周仔细了解了一下。对于一个数据库不可能随意的访问,肯定要有写访问限制。

在了解这个之前首先熟悉下shell客户端。打开shell客户端的方法:mongo.关闭数据库引擎的话可以使用db.shutdownServer().

一、shell命令

MongoDB的shell提供了一些命令,可以从shell提示符执行它们。

二、shell方法

MongoDB中的shell提供了许多用于执行管理功能的方法。

三、使用shell编写脚本

命令、方法和MongoDB shell的数据结构都是基于交互式Javascript的。管理MongoDB的一个很好的方法是创建可以运行多次的脚本,或者可以随时在特定的时间运行的脚本,如在升级时运行的脚本。脚本文件可以包含任意数量的MongoDB命令,使用javascript代码,如条件语句和循环。有两种运行MongoDB shell脚本的方式。

1.使用--eval

该--eval参数接受一个Javascript字符串或Javascript文件并启动MongoDB的shell,并立即执行Javascript。

2.使用load(script_path)方法运行MongoDB脚本。

四、管理用户账号

1.创建用户账号

不管是创建用户管理员账号还是数据库管理员账号都是用addUser()方法添加用户账户,MongoDB 3.0之后用createUser()代替,再用adduser()会提示adduser()不是function,下面的截图能看到提示,该方法接受一个document对象,允许指定该用户的用户名、角色和密码。下面是document对象可以指定的字段:

2.角色

用户和角色是多对多的关系,一个用户可以对应多个角色,一个角色可以拥有多个用户。用户角色的不同对应的权限也是不一样的。下面是一些分配给用户的常见的角色。

3.删除用户账号

可以使用removeUser(<username>)方法删除MongoDB的用户。需要先切换到该用户所在的数据库。在MongoDB 3.0后使用dropUser(<username>),下面配置时截图就能看到提示。

五、配置访问控制

MongoDB提供在数据库级别上的验证和授权,意味着用户存在于单个数据库的上下文中。为了实现基本的身份验证,MongoDB把用户凭据存储在每个数据中名为system.users的集合中。

当还没在admin数据库中定义用户时,MongoDB允许在本地主机上的连接有对数据库的完全管理访问。因此,设置新的MongoDB实例的第一步是创建用户管理员和数据库管理员账户。用户管理员具有在admin和其他数据库中创建用户账户的功能。还需要创建一个可以当作超级用户使用的数据库管理员账户,用来管理数据库、集群、复制和MongoDB的其他方面。

1.创建用户管理员

用户管理员账号应只有创建用户的权限,而没有管理数据库或其他管理功能。使数据库管理和用户账户管理完全分离。用户管理账户应该以userAdminAnyDatabase作为唯一的角色来创建。

上面截图可以看到使用用户管理员账户来查询collection是报错,这是因为用户管理员账户只是用来管理用户的,不能管理数据库。

2.打开身份验证

用户管理员账户已经创建需要使用--auth参数重启MongoDB数据库

3.创建数据库管理员

上面截图中创建了一个admin数据库的数据库管理员,使用数据库管理员显示collections是可以显示的,而使用用户管理员显示时报错。

到此这篇关于MongoDB数据库权限管理的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文