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 - 官方文档》
---------------- 侵删!---------------
相关推荐
使用nodejs的koa框架连接MongoDB数据库
nodejs连接mongodb示例,实现对数据的增删改查操作(跳过不必要的坑) Windows版 http://blog.csdn.net/wangyunbo158/article/details/78751398
nodejs + mongodb 资源 合集 01
Build an interactive and full-featured web application from scratch using Node.js and MongoDB About This Book Configure your development environment to use Node.js and MongoDB Use Node.js to connect ...
在node.js的基础下,cmd下直接npm i后node app.js就能直接运行了,里面还有很多地方尚未完成,适合初学者,大佬勿扰,
基于nodejs express mongodb multer 实现的文件上传、存储、分页、管理功能,同时介绍了百度云基础班引擎mongodb部署方案。
NodeJs+MongoDB+Express+Async实现增删改查的实例 字数字数字数
mongoDB-acl-nodejs 一个非常简单的Acl模块,用于在应用程序内存和MongoDB中使用的NodeJS 我创建此模块是因为我需要使用MongoDB的非常简单的Acl模块功能说明Acl.init(选项,回调) -options :对象用于连接到您的...
图书管理系统,java+express+mongodb+nodejs+gulp.zip 图书管理系统,java+express+mongodb+nodejs+gulp.zip 图书管理系统,java+express+mongodb+nodejs+gulp.zip 图书管理系统,java+express+mongodb+nodejs+...
二、Nodejs 连接 MongoDb 数据库 二、Nodejs 查找 MongoDb 数据库集合 三、Nodejs 给 MongoDb 增加数据 四、Node
MESN (MongoDB Express AngularJS Nodejs)英文书籍2014以后出版共8本, 打包成一个档,以节省大家的时间。 Express in Action - Writing, building, and testing Node.js Applications (Manning 2016).pdf Express....
Mongoose是在node.js异步环境下对mongodb进行便捷操作的对象模型工具。 本资源代码配合博客使用:https://blog.csdn.net/qq_25479327/article/details/81148772 NodeJs使用mongoose操作mongodb
MongDB存储json文件,与Node JS集成,经典教程。
mongodb-nodejs-casadocodigoMongoDB + NodeJS(表达+和尚) 数据库...:测试收藏...:系列收费 mongo < db/seriados.js文件范例 db.seriados.findOne(){ "_id" : ObjectId("1"), "nome" : "Breaking Bad", ...
源代码可以自由的下载该多好,非要人去做各种无聊的任务
nodejs-mongodb-使用Nodejs和mongodb数据库编写的登录注册小demo
nodejs-mongodb mongodb的nodejs操作
备份mongodb 查看的命令行用法,类似于 查看中的还原数据 安装 通过NPM安装 npm install mongodb-backup 要么 git clone git://github.com/hex7c0/mongodb-backup.git Bson@0.4.11已被拔出,因此不推荐使用版本>...
Webstorm+Nodejs+MongoDB的博客管理系统,使用Webstorm开发工具,编写js代码及前端html代码,连接MongoDB数据库进行数据交互,下载该代码文档,配置相应环境运行,将在浏览器上给你呈现出一个完整的博客管理系统!...
这是一个简单的express+mongodb+node的例子,如果1要运行的话需要安装node环境还有mongodb数据库,里面是一个简单的博客平台的例子,很适合初学者,而且代码我都有大量的注释,很好看懂