MongoDB安装完成后,有两种启动方式:
>mongod
这是默认启动方式,没有开启auth权限验证,或者
>mongod --auth
这是使用auth权限验证。在这种模式下,每次操作一个一个库前,必须做auth验证,而且每次默认首先进入的是test db,所以一旦开启验证,必须确保test添加了验证。如下是创建用户的简要过程。
以关闭auth验证启动MongoDB,创建一个有grant权限的用户,即账号管理,
> use admin switched to db admin > db.createUser( ... { ... user: "dba", ... pwd: "dba", ... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] ... } ... ) Successfully added user: { "user" : "dba", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
这样user("dba","dba")创建完成,它保存在admin中,角色是userAdminAnyDatabase(用户级别的数据库管理权限),以后可以用来管理其他的用户账号,这里总结下MongoDB的roles角色。
Built-In Roles(内置角色) | 具体角色 |
1. 数据库用户角色:read、readWrite; 2. 数据库管理角色:dbAdmin、dbOwner、userAdmin; 3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager; 4. 备份恢复角色:backup、restore; 5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase 6. 超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase) 7. 内部角色:__system |
Read:允许用户读取指定数据库 readWrite:允许用户读写指定数据库 dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。 readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限 readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限 userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。 root:只在admin数据库中可用。超级账号,超级权限 |
这样,先看下变化
> show dbs admin 0.000GB local 0.000GB test 0.000GB young 0.006GB > use admin switched to db admin > show collections system.users system.version
可以清楚的看到,数据库里面多了admin,查看admin中的集合,可以发现,我们新建的用户都保存在system.users这个集合中,通过命令查看刚才新建的命令:
> db.system.users.find({user:"dba"}).pretty(); { "_id" : "admin.dba", "user" : "dba", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "bFBofkgvlS9/DEfuYBYFBA==", "storedKey" : "QAwo9n5KQ/ewyu/RJiJX8fk5LqY=", "serverKey" : "HUqkLsGk1g9NAfoheoQBuauwRo8=" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
接下来,我们分别为test创建一个具有readWrite权限的用户test:
> db.createUser( ... ... { ... ... user: "test", ... ... pwd: "test", ... ... roles: [ { role: "readWrite", db: "test" } ] ... ... }); Successfully added user: { "user" : "test", "roles" : [ { "role" : "readWrite", "db" : "test" } ] }
,为young库创建readWrite权限的用户run:
> db.createUser( ... ... { ... ... user: "run", ... ... pwd: "run", ... ... roles: [ { role: "readWrite", db: "young" } ] ... ... }) Successfully added user: { "user" : "run", "roles" : [ { "role" : "readWrite", "db" : "young" } ] }
> db.createUser( ... ... { ... ... user: "run", ... ... pwd: "run", ... ... roles: [ { role: "readWrite", db: "young" } ] ... ... }) Successfully added user: { "user" : "run", "roles" : [ { "role" : "readWrite", "db" : "young" } ]
这样基本的用户创建完毕,最后总的来看一下刚才的所有的用户:
> db.system.users.find({},{_id:0,credentials:0}).pretty(); { "user" : "dba", "db" : "admin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] } { "user" : "run", "db" : "young", "roles" : [ { "role" : "readWrite", "db" : "young" } ] } { "user" : "test", "db" : "test", "roles" : [ { "role" : "readWrite", "db" : "test" } ] }
至此,用户权限的创建完成。以开启auth权限验证启动MongoDB(mongod --auth),并做一些基本的操作:
localhost:~ yfangjun$ mongo MongoDB shell version: 3.2.3 connecting to: test > db.auth("test","test"); 1 > use admin switched to db admin > db.auth("dba","dba"); 1 > show dbs; admin 0.000GB local 0.000GB test 0.000GB young 0.006GB > use young; switched to db young > db.auth("run","run"); 1 > show collections; app143897298787642 restaurants > db.restaurants.find({},{_id:0,"address.coord":1}).limit(1); { "address" : { "coord" : [ -73.961704, 40.662942 ] } }
相关推荐
同时,权限管理也更加精细,可以对特定数据库或集合设置访问控制,确保数据安全。 最后,MongoDB 3.x版本的另一个重要改进是支持地理空间索引和查询,这使得地理位置相关的数据处理变得更加便捷,对于需要处理位置...
MongoDB 提供了不同级别的角色来控制用户权限,主要分为以下三类: 1. **数据库用户角色**:如 `read` 和 `readWrite`。`read` 角色允许用户只读访问数据库,而 `readWrite` 角色允许读写操作。 2. **数据库管理...
- 数据库的安全管理包括用户认证、角色权限控制和网络访问限制,确保数据安全。 - 为了生产环境的最佳实践,建议开启认证,设置防火墙规则,并定期备份数据。 6. 性能调优和监控: - MongoDB有许多性能监控工具...
如果MongoDB是作为守护进程运行,还需要考虑安全性,如设置适当的用户权限、启用访问控制和防火墙规则。 9. **社区资源** 当遇到困难时,不要忘记利用开源社区的力量,如iteye博客、Stack Overflow、MongoDB官方...
7. **安全与权限管理**:该工具允许用户配置MongoDB的访问控制,管理用户角色和权限,确保数据的安全性。 8. **集群管理**:支持对MongoDB复制集和分片集群的管理,可以轻松添加、删除和监控节点,以及查看复制状态...
8. **安全与权限管理**:可以配置用户、角色和访问控制列表,确保 MongoDB 系统的安全性。 9. **版本控制**:集成 Git,实现对数据库对象的版本控制,便于团队协作和代码审查。 10. **SSH 隧道**:支持通过 SSH ...
- 对于生产环境中的MongoDB部署,建议根据实际情况调整配置参数,如启用身份验证、设置更严格的权限控制等,以提高系统的安全性。 - 如在安装过程中遇到问题,可参考官方文档或社区资源寻求解决方案。
- **访问控制**:使用角色和权限管理访问。 **3.3 复制和分片配置** - **复制集**:设置复制集以提高数据冗余性和可用性。 - **分片**:将大型数据集分布在多个物理服务器上以提高性能和可扩展性。 **3.4 在同一...
Spring 3.2.x中的AOP模块提供了强大的切面编程支持,可以用于日志记录、事务管理、权限控制等功能。通过`@Aspect`、`@Before`、`@After`等注解,开发者可以轻松定义和应用切面,实现代码的解耦和模块化。 三、数据...
5. 安全管理:允许用户管理MongoDB的用户权限和角色,以及设置访问控制,确保数据库安全。 6. 性能监控:提供实时性能监控功能,显示数据库的运行状态,如查询性能、内存使用等,帮助优化数据库性能。 7. 备份与...
MongoDB 是一个流行的开源文档数据库...在生产环境中,你可能需要考虑更多的设置,比如配置文件、日志管理、权限控制、复制集以及自动化启动服务等。同时,确保定期更新MongoDB到最新稳定版本以获取安全修复和新特性。
本源码集合可能包含了基于Spring3.x的典型企业级应用的实现,涵盖了诸如数据访问、事务管理、安全控制、MVC web开发等多个方面。 首先,Spring的核心是IoC容器,它负责管理对象的生命周期和对象之间的依赖关系。...
SpringBoot_MongoDB”深入实践了SpringBoot与NoSQL数据库MongoDB的整合,同时也结合了传统的SQL数据库MySQL和ORM框架MyBatis,以及SpringMVC,构建了一个完整的用户、角色、菜单授权模型,实现了细粒度的权限控制。...
- 用户权限管理:MongoDB 支持用户认证和角色权限,可以设置访问控制来保护数据。 - SSL 加密:可以启用 SSL 连接以保证数据传输的安全性。 7. **监控与管理** - MongoDB 提供了多种监控工具,如 mongostat、...
6. 安全性:提供对数据库访问控制列表(ACL)的可视化管理,方便设置用户权限,确保数据安全。 7. 数据操作:支持基本的数据修改操作,如添加、更新和删除文档,以及聚合操作,便于数据分析。 8. 应用连接:能够...
4. **安全增强**:增强了身份验证和访问控制,包括支持TLS/SSL连接和X509认证,以及更严格的默认安全设置。 5. **交易支持**:MongoDB 4.2引入了多文档ACID事务,这使得它更适合处理复杂的业务逻辑,尤其是在需要跨...
10. **兼容性和升级**:Java驱动3.2版本与MongoDB 3.x系列服务器兼容,但请注意,随着MongoDB服务器的更新,驱动程序也需要相应升级以利用新特性并修复已知问题。 总的来说,MongoDB的Java驱动3.2版本为Java开发者...
6. 安全管理:Robo 3T也支持MongoDB的用户管理,包括创建、编辑和删除用户,以及设置角色和权限,确保数据库的安全性。 7. SSH隧道:对于远程访问或安全连接,Robo 3T支持通过SSH建立隧道,确保数据传输的安全。 8...
强烈建议在生产环境中配置身份验证和访问控制,以保护数据安全。 10. **备份和恢复**: MongoDB提供了`mongodump`和`mongorestore`工具,用于备份和恢复数据。定期执行备份计划是保障数据安全的重要措施。 通过以上...