Node.js通过账号密码连接MongoDB数据库

上周遇到了MongoDB数据库的数据被全部盗取的情况,没想到这种事情也发生了在我的身边,主要因为把MongoDB服务暴露在了外网上面,所以也怪不得谁了,后面决定为MongoDB设置账号密码,以下为设置账号和密码的全过程,后面还有通过Nodejs连接数据库的一个坑。
1.创建管理员
首先开启Mongo服务,然后切换admin数据库,一开始是没有这个数据库的。

use admin
1
2.然后创建用户和密码:

db.createUser({user:’root’,pwd:’root1234’,roles:[‘root’]})
1
3.创建了管理员账号和密码之后,然后运行Mongo服务的时候加上 –auth参数:

mongod --dbpath “F:mongodb\data\db” --logpath “F:\mongodb\data\log\MongoDB.log” --auth
1
4.这时候如果直接登录数据库,想查看数据,是看不了的,需要用以下命令才能登录成功,如果打印出来一个’1’,说明登录成功:

db.auth(‘root’,‘root1234’)
1
1
2
到这一步,MongoDB设置账号密码就已经完成了,接下来我需要用Nodejs来连接数据库,我用的是mongoose这个库,他提供了Schema、Model和Document对象,用起来非常方便,但是当我按照官网的例子来写时发现并不成功,如下:

var mongoose=require(“mongoose”)

mongoose.connect(‘mongodb://root:root1234@localhost:27017/test’);
1
2
3
一直都是报错,说验证失败

后面查了很多资料也没有查到,无奈只有再去研究官方API,在官方API中看到:

mongoose.connect(‘mongodb://username:password@host:port/database?options…’);
1
这是官网连接的例子,后面有一个options参数,我怀疑这里是否需要写一些参数,但是在实际的例子中没有看到后面写任何参数,然后找到官网中对于options的说明,如下:

看到第一个参数authSource,他的描述是:If the database authentication is dependent on another databaseName. 他的意思是如果数据库认证需要依赖于另外一个数据库名称。我想了想,我们的数据库账号密码不是存储admin数据库嘛,而我们现在需要连接的是另外一个数据库,可以试着加这个参数看看,就是authSource=admin。果然,加上这个参数之后,就可以成功的连接上数据库了,看来还是官网文档靠谱,遇到问题一定要先看看官方文档说明,很多问题有可能就解决了。
以上就是Nodejs连接设置了账号密码的MongoDB数据库的一些坑,在网上没有看到解决方案,希望大家看到了有所启示。
————————————————
版权声明:本文为CSDN博主「szu_lzz」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/szu_lzz/article/details/77435804

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. React技术:React是Facebook开发的一款JavaScript库,用于构建用户界面。它使用组件化的思想,将用户界面拆分成独立的、可复用的部件,使得代码更易于维护和扩展。React还具有高效的虚拟DOM机制,可以减少对实际DOM的操作,从而提升性能。 2. Node.jsNode.js是一款基于Chrome V8引擎的JavaScript运行环境,可以使JavaScript脱离浏览器,运行在服务器端。Node.js具有事件驱动、非阻塞I/O等特点,使得它能够处理大量并发连接,适用于构建高性能、高可扩展性的网络应用。 3. Express框架:Express是一款基于Node.js的Web应用框架,提供了丰富的API和中间件,可以轻松地处理HTTP请求、路由、模板引擎等任务。Express还具有灵活的扩展性,可以与其他第三方模块和库无缝集成。 4. MongoDB数据库MongoDB是一款面向文档的NoSQL数据库,使用JSON风格的文档存储数据,支持数据的动态模型,具有高效的读写能力和可扩展性。MongoDB还具有灵活的查询语言和索引机制,可以满足各种数据存储和查询需求。 5. Swagger:Swagger是一款用于设计、构建和文档化RESTful API的开源工具。它可以自动生成API文档、测试代码和客户端代码,使得API的开发和维护更加容易和高效。 6. Git:Git是一款分布式版本控制系统,可以跟踪代码的历史变化、管理多个分支和合并操作。Git具有高效的提交和回滚机制,可以保证代码的稳定性和可维护性。同时,Git还可以与其他开发工具无缝集成,如GitHub、GitLab等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值