1. 加认证前,nodejs连mongoDB只需要
var mongojs = require('mongojs/index'); var db = mongojs("databaseName",[collection1,collection2,...]);
2. 要上线的项目使用mongoDB,出于安全考虑,都需要加认证,即创建操作数据库所使用的用户名密码。
加认证的方法如下:
添加用户的时候必须满足以下两个条件: 1.有相关权限的情况下(后面会说)。 2.mongod没有加--auth的情况下(如果加了,你添加权限的话 会出现下面的情况)。 > use admin switched to db admin > db.addUser('sa','sa') Fri Jul 22 14:31:13 uncaught exception: error { "$err" : "unauthorized db:admin lock type:-1 client:127.0.0.1", "code" : 10057 } > 所以我们添加用户时必须先在没有加--auth的时候添加个super admin。 服务起来后,进入./mongo。 [root@:/usr/local/mongodb/bin]#./mongo MongoDB shell version: 1.8.2 connecting to: test > use admin switched to db admin > db.adduser('sa','sa') Fri Jul 22 14:34:24 TypeError: db.adduser is not a function (shell):1 > db.addUser('sa','sa') { "_id" : ObjectId("4e2914a585178da4e03a16c3"), "user" : "sa", "readOnly" : false, "pwd" : "75692b1d11c072c6c79332e248c4f699" } > 这样就说明 已经成功建立了,然后我们试一下权限。 > show collections system.indexes system.users 在没有加--auth的情况下 可以正常访问admin喜爱默认的两个表。 > db.system.users.find() { "_id" : ObjectId("4e2914a585178da4e03a16c3"), "user" : "sa", "readOnly" : false, "pwd" : "75692b1d11c072c6c79332e248c4f699" }> 已经成功建立。 下面把服务加上--auth的选项,再进入./mongo。 MongoDB shell version: 1.8.2 connecting to: test > use admin switched to db admin > show collections Fri Jul 22 14:38:49 uncaught exception: error: { "$err" : "unauthorized db:admin lock type:-1 client:127.0.0.1", "code" : 10057 } > 可以看出已经没有访问权限了。 我们就用自己的密钥登录下: > db.auth('sa','sa') 1 返回1说明验证成功! 再show collections下就成功了。 ..... 我们登录其它表试试: [root@:/usr/local/mongodb/bin]#./mongo MongoDB shell version: 1.8.2 connecting to: test > use test switched to db test > show collections Fri Jul 22 14:40:47 uncaught exception: error: { "$err" : "unauthorized db:test lock type:-1 client:127.0.0.1", "code" : 10057 } 也需要验证,试试super admin登录: [root@:/usr/local/mongodb/bin]#./mongo MongoDB shell version: 1.8.2 connecting to: test > use test switched to db test > show collections Fri Jul 22 14:40:47 uncaught exception: error: { "$err" : "unauthorized db:test lock type:-1 client:127.0.0.1", "code" : 10057 } > db.auth('sa','sa') 0 返回0验证失败。 好吧,不绕圈子,其实super admin必须从admin那么登录 然后 再use其它表才可以。 > use admin switched to db admin > db.auth('sa','sa') 1 > use test switched to db test > show collections > 如果想单独访问一个表,用独立的用户名,就需要在那个表里面建相应的user。 [root@:/usr/local/mongodb/bin]#./mongo MongoDB shell version: 1.8.2 connecting to: test > use admin switched to db admin > db.auth('sa','sa') 1 > use test switched to db test > db.addUser('test','test') { "user" : "test", "readOnly" : false, "pwd" : "a6de521abefc2fed4f5876855a3484f5" } > 当然必须有相关权限才可以建立。 再登录看看: [root@:/usr/local/mongodb/bin]#./mongo MongoDB shell version: 1.8.2 connecting to: test > show collections Fri Jul 22 14:45:08 uncaught exception: error: { "$err" : "unauthorized db:test lock type:-1 client:127.0.0.1", "code" : 10057 } > db.auth('test','test') 1 > show collections system.indexes system.users >
3. nodejs 连接加认证后的mongoDB:
var mongojs = require('mongojs/index'); var db = mongojs('dbUserName:dbPassword@dbHost:dbPort/dbName',[collection1,collection2,...]);
注意:
1.必须给所用到的数据库加用户名密码,只给admin设账号密码不够,nodejs连的时候会报错!
2.MongoDB,第一次加完认证,需要重新安装启动服务,认证模式和非认证模式切换的时候,有可能会安装失败,有时会是原服务还在服务列表中,并且手动删除时,会报该服务“已标记为删除”的错误,这时候,只需要把服务窗口关闭,并安装Mongo服务。
参考:
《MongoClient connect - 官方文档》
《Connection String URI Format - 官方文档》
---------------- 侵删!---------------
相关推荐
本教程将详细讲解如何使用Koa框架来连接和操作MongoDB数据库。 ### 1. 安装必要的库 首先,我们需要安装`koa`和`mongoose`。`mongoose`是Node.js中用于操作MongoDB的库,它提供了一套强大的API,简化了数据库操作...
MongoDB需要在本地或远程服务器上运行,并通过Mongo shell或连接工具(如Robo 3T)进行管理。 1. **安装依赖** 使用Node.js的npm,安装Express、Mongoose(一个用于Node.js的MongoDB对象模型工具)和其他必要的库...
然后,我们需要连接到MongoDB数据库。这里假设你已经在MongoDB Atlas或本地安装了MongoDB,并已创建了一个数据库,如`mydatabase`: ```javascript mongoose.connect('mongodb://localhost/mydatabase', { ...
3. **创建数据库连接**:使用Mongoose建立到MongoDB的连接,定义博客数据模型,如文章模型(ArticleSchema)和用户模型(UserSchema)。 4. **设置路由**:使用Express定义路由来处理HTTP请求,例如创建、读取、...
Node.js之所以流行,很大程度上是因为它具有非阻塞I/O和事件驱动的特性,这让它能够处理大量并发连接,非常适合需要高性能和实时通信的Web应用程序。 MongoDB是一种面向文档的NoSQL数据库管理系统,它提供了一种...
《NodeJS+MongoDB+AngularJS WEB开发原版》是一本深入探讨现代Web开发技术的书籍,特别关注了使用Node.js、MongoDB和AngularJS构建全栈应用的实践方法。Node.js是基于Chrome V8引擎的JavaScript运行环境,它允许...
在本项目"NodeJS MongoDB打造多人在线聊天室"中,我们将深入探讨如何使用Node.js和MongoDB构建一个实时、多用户交互的聊天平台。Node.js以其异步非阻塞I/O模型和高效的性能,成为构建实时应用的理想选择,而MongoDB...
Node.js连接MongoDB数据库是许多基于Node.js开发的应用程序中常见的需求,下面详细讲解使用Node.js实现连接MongoDB数据库的方法和技巧。 首先,Node.js通过MongoDB官方提供的MongoDB Driver(一个npm包)来实现与...
该压缩包文件“基于Vue+Nodejs+MongoDB小区社区综合治理管理系统源码案例设计.zip”包含了一套完整的小区社区综合治理管理系统的源代码实现,利用了前端的Vue.js框架、后端的Node.js以及数据库管理系统MongoDB。...
【标题】:“采用NodeJs+Express+MongoDB构建的个人博客系统” 【描述】:这个项目是基于Node.js、Express框架以及MongoDB数据库构建的个人博客系统,它展现了如何使用这些技术栈来创建一个功能完备的Web应用。Node...
**标题解析:** "mongodblog" 是一个基于 Node.js、...综上所述,mongodblog 是一个集成了多种关键 Web 开发技术的项目,适合学习 Node.js 后端开发、MongoDB 数据库操作、以及使用模板引擎和认证策略来构建动态网站。
总的来说,"Node.js + MongoDB + Express 的电影网站"是一个典型的Web开发项目,涵盖了前后端交互、数据库操作、用户认证、数据安全等多个核心知识点,对于提升Web开发技能和理解现代Web应用架构有极大的帮助。
监控系统是现代IT环境中不可或缺的一部分,它用于实时追踪和分析系统的运行状态,以便及时发现并解决问题。本项目是一个基于Node.js、Express框架和MongoDB数据库的后台系统,专为毕业设计而构建,旨在帮助学生掌握...
《Node.js + MongoDB实战开发微博系统》 在现代Web开发中,Node.js以其异步非阻塞I/O和高效的性能,已经成为构建实时应用的理想选择。MongoDB作为一个强大的NoSQL数据库,以其灵活的数据模型和高性能,常被用于处理...
这个压缩包"博客系统(服务端渲染,nodejs + express + mongoDB ).zip"包含了一个基于Node.js的博客平台,采用Express框架进行后端开发,并利用MongoDB作为数据库存储数据。下面将详细介绍这个系统的技术栈和相关知识...
该压缩包文件“基于Vue+Nodejs+MongoDB校园二手信息发布平台设计源码案例设计.zip”包含了一个完整的校园二手信息发布平台的设计源码。这个平台利用了前端技术Vue.js、后端技术Node.js以及数据库管理系统MongoDB,是...
通过研究这个源码案例,你可以学习到如何将Vue.js、Node.js和MongoDB结合使用,实现一个完整的Web应用程序,同时掌握前后端通信、数据库设计和用户认证等关键技能。对于想要提升全栈开发能力的开发者来说,这是一个...
这样,当用户登录后,其session数据会被存储在MongoDB中,后续请求可以通过session恢复用户状态。注意处理session过期和安全性问题。 在实际项目中,你可能还需要考虑以下方面: - 错误处理:使用中间件捕获和处理...
完成上述步骤后,你的Node.js应用已经成功部署到Heroku,并使用MongoDB作为数据库。你可以在Heroku的应用页面查看状态,并测试是否可以正常运行。 这个过程展示了如何使用Express和Mongoose构建一个简单的web应用,...
你可以输入服务器地址、端口、认证信息等,以便连接到你的MongoDB实例。 2. **集合管理**:在每个数据库下,你可以看到所有的集合,并进行CRUD(创建、读取、更新、删除)操作。这对于快速原型开发和调试非常有用。...