`

学习MongoDB(三)——安全和授权

阅读更多

MongoDB在非授权模式下启动显然是不安全的,任何人都能通过客户端连接数据库服务器,并且操作里面的所有数据。MongoDB以安全的授权方式启动:

mongod --auth

 

这样就只有数据库添加的授权用户才能连接数据库,并进行数据操作。

官方给出的用户管理的说明:http://www.mongodb.org/display/DOCS/Security+and+Authentication

添加一个admin超级管理员用户:

> use admin
> db.addUser("oneAdminUser", "123456")

 

理解成MongoDB把所有的admin管理员添加到了一个admin数据库中进行管理。

用admin用户的身份登陆数据库,给一般的数据添加普通用户:

> use projectx
> db.addUser("joe", "passwordForJoe")
> db.addUser("guest", "passwordForGuest", true)

 

其中第二个guest用户的readonly属性为true。

查看某个数据库中拥有的所有用户:

> use projectx
> show users
> // or
>db.system.users.find()

 给某个用户更改密码也用db.addUser,这个函数会判断用户村不存在,不存在就创建,存在就(密码)替换掉以前的。

删除用户:

> db.removeUser("user1")
> // or
> db.system.users.remove({user:"user2"})

好了,用户添加完了,现在来看这么用mongo 以某个用户的身份登陆MongoDB数据库,首先确保数据库以授权的安全形式启动了,以admin用户的身份登陆

> mongo 192.168.1.154/admin -u oneAdminUser -p 123456

oneAdminUser密码是123456,以admin的身份登陆位于192.168.1.154上的MongoDB数据库。因为是admin用户,登陆进去之后就能进行任何操作。

普通用户登陆普通的数据库的方式类似的:

> mongo 192.168.1.154/projectx -u joe -p passwordForJoe

 

joe这个用户登陆位于192.168.1.154机器上的projectx数据库。

如果在Java程序中登陆,代码如下:

Mongo mongo = new Mongo("192.168.1.154", 27017); 
DB db = mongo.getDB("admin"); 
db.authenticate("oneAdminUser", "123456".toCharArray());
System.out.println("数据库列表:"+mongo.getDatabaseNames());  //所有有数据的数据库名称

db = mongo.getDB("projectx");
//然后可以对任何数据库进行任何操作
System.out.println(db.command("isMaster"));  
DBCollection collection = db.getCollection("onecollection"); 
collection.find();

 普通用户登陆普通数据库:

Mongo mongo = new Mongo("192.168.1.154", 27017);   
db =  mongo.getDB("projectx");
db.authenticate("guest", "123456".toCharArray()); 
DBCollection collection = db.getCollection("onecollection"); 
collection.find();

guest这个用户就只能对projectx这个数据库进行操作了。 

 

分享到:
评论

相关推荐

    mongodb-linux-x86_64-rhel62-4.4.1.tgz

    在学习MongoDB时,你需要掌握基本的CRUD操作、数据模型设计、索引使用、复制集的建立和维护、分片集群的搭建以及性能调优策略等。理解NoSQL数据库的核心理念,如灵活性、可伸缩性和高性能,将有助于你更好地应用...

    mongodb-linux-x86_64-3.0.2.tgz

    同时,MongoDB提供了认证和授权机制,允许管理员控制对数据库的访问权限,确保只有授权用户能够进行操作。 在开发工具和API方面,MongoDB 3.0.2兼容多种编程语言,如Python、Java、C#、Node.js等,使得开发者可以...

    studio 3T MongoDB图形化管理工具

    8. **安全性**:提供加密功能,保护数据安全,同时支持身份验证和访问控制,确保只有授权用户可以访问数据库。 **二、安装与配置** 1. **下载与安装**:从官方网站下载适合操作系统(例如,这里提供的x64位版本)...

    网络游戏——五子棋 学习

    这需要实现验证机制,比如使用HTTPS协议加密通信,以及采用合适的认证和授权策略。 7. **用户体验优化**:为了提升游戏体验,还可以添加一些额外功能,如悔棋、禁手规则、智能AI对战等。AI对战通常会用到搜索算法,...

    ZhiZu Shop基于spring mongodb实现的小型网上商场系统.zip

    Spring Security则提供了用户认证和授权,保障了系统的安全性。在数据层,MongoDB的聚合框架用于实现复杂的数据分析,如销售统计和用户行为分析。 此外,系统的前端部分可能采用了HTML5、CSS3和JavaScript,以及...

    微博系统。使用nodejs+express4+mongodb技术进行开发。.zip

    在微博系统中,用户认证和授权是重要的安全环节。Node.js和Express4提供了基础的Session和Cookie管理,可以实现用户登录状态的保持。同时,为了保护用户数据的安全,我们需要对敏感信息如密码进行加密存储,通常采用...

    mongodb-courses:MongoDB大学课程的实验室和测验代码

    本压缩包文件“mongodb-courses-master”包含了MongoDB大学的两门课程——M001和M103的实验室和测验代码,这些实践材料对于深入理解和应用MongoDB至关重要。 **M001:MongoDB基础** M001课程主要介绍MongoDB的基础...

    安卓Android源码——简易微信客户端和服务器源码.zip

    3. **安全性**:实现用户认证和授权,如OAuth 2.0,防止未授权访问。 4. **消息队列**:如RabbitMQ,用于异步处理高并发的消息传递,提高系统性能。 5. **API设计**:遵循RESTful原则,定义清晰的接口供客户端调用。...

    Java Web应用教程——网上购物系统的实现

    综上所述,“Java Web应用教程——网上购物系统的实现”不仅涵盖了Java Web应用的基础知识,还深入探讨了如何设计和构建一个功能完备、性能卓越、安全可靠的网上购物系统。这对于学习Java Web开发或是准备搭建电子...

    铁路后台管理系统--后端(node-mongodb)前端(mui框架打包ios).zip

    《铁路后台管理系统——基于Node.js与MongoDB的后端实现及Mui框架的iOS前端构建》 本项目是一个铁路后台管理系统,其核心在于后端服务的搭建以及前端界面的开发,旨在提供高效、稳定的管理功能。系统采用Node.js...

    算法设计与分析——分布式算法

    8. 分布式安全:了解如何确保分布式系统的安全性,包括认证、授权、加密和防止攻击。 9. 分布式计算优化:学习如何通过并行化、分片、压缩等技术优化分布式计算,提升系统性能。 10. 分布式算法实例:分析实际应用...

    mongo数据库分享-张亚V1.pdf

    总的来说,张亚的这篇MongoDB数据库分享,不仅对于零基础的学习者十分友好,而且通过实例和操作步骤的讲解,让有经验的开发者也能从中学习到更多高级技巧和操作知识。通过对这些知识点的掌握,用户可以更加熟练地...

    安卓Android源码——(精)(带服务端)网络办公完整源码.zip

    例如,Android 6.0及以上版本需要动态申请权限,推送通知通常借助Firebase Cloud Messaging (FCM) 或其他第三方服务,而数据传输的安全性则需要通过HTTPS协议和SSL/TLS加密来保障。 总的来说,这份“安卓Android...

    毕业设计——大型系统架构演化.zip

    10. **安全机制**:身份验证、授权、加密、防止SQL注入和XSS攻击等方法的实施。 通过深入研究这个项目,学习者不仅可以了解到一个大型系统从无到有的建设过程,还能学习到如何处理系统扩展性、维护性和安全性的问题...

    网上商城——WEB程序设计课程期末大作业项目.zip

    4. **数据库管理**: MySQL、PostgreSQL或MongoDB等数据库系统用于存储用户信息、商品数据和订单记录。学生需要理解SQL查询和数据库设计原则。 5. **RESTful API设计**: 为了实现前后端分离,学生需要设计符合REST...

    毕业设计——校友网管理系统.zip

    综上所述,"毕业设计——校友网管理系统.zip"是一个综合性的IT项目,涵盖了前端与后端开发、数据库设计、安全防护、性能优化等多个方面,是学习和实践Web应用开发的宝贵资源。通过这样的项目,开发者可以全面提升...

    毕设&课程作业_智能点餐系统——后端.zip

    4. 授权和权限:实施RBAC(Role-Based Access Control)角色权限管理。 六、测试与部署 1. 单元测试:确保每个功能模块的正确性。 2. 集成测试:检查各模块间的协同工作。 3. 性能测试:模拟高并发场景,优化系统...

    毕业设计——合同管理系统

    【毕业设计——合同管理系统】 合同管理系统是一款用于企业管理合同的软件应用,它涵盖了合同的创建、审批、执行、到期提醒、存储以及查询等多个环节,旨在提高企业合同管理的效率和规范性。这个毕业设计项目不仅...

    毕业设计——多用户博客系统.

    3. **数据库管理**:MySQL、PostgreSQL或MongoDB等数据库管理系统可能是存储用户信息、博客内容的载体,涉及到SQL查询优化和数据结构设计。 4. **用户认证与授权**:如OAuth2、JWT(JSON Web Tokens)等机制可能用于...

    ASP.NET源码——[电子商务]网店联盟商城.zip

    源码可能会展示如何使用ASP.NET的身份验证和授权机制,如Forms Authentication、Role-Based Authorization,以及防止SQL注入和跨站脚本攻击的方法。 5. **支付集成**:网店联盟商城通常需要集成第三方支付平台,如...

Global site tag (gtag.js) - Google Analytics