Nodejs通过账号密码连接MongoDB数据库

Posted 安筱雨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nodejs通过账号密码连接MongoDB数据库相关的知识,希望对你有一定的参考价值。

转自https://blog.csdn.net/szu_lzz/article/details/77435804#commentBox
1.创建管理员
首先开启Mongo服务,然后切换admin数据库,一开始是没有这个数据库的。

> use admin
  • 1

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

> db.createUser({user:’root’,pwd:’root1234’,roles:[‘root’]})
  • 1

3.创建了管理员账号和密码之后,然后运行Mongo服务的时候加上 –auth参数:

mongod --dbpath "F:mongodbdatadb" --logpath "F:mongodbdatalogMongoDB.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:[email protected]:27017/test‘);
  • 1
  • 2
  • 3

一直都是报错,说验证失败
技术分享图片

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

mongoose.connect(‘mongodb://username:[email protected]:port/database?options...‘);
  • 1

这是官网连接的例子,后面有一个options参数,我怀疑这里是否需要写一些参数,但是在实际的例子中没有看到后面写任何参数,然后找到官网中对于options的说明,如下:
技术分享图片
看到第一个参数authSource,他的描述是:If the database authentication is dependent on another databaseName. 他的意思是如果数据库认证需要依赖于另外一个数据库名称。我想了想,我们的数据库账号密码不是存储admin数据库嘛,而我们现在需要连接的是另外一个数据库,可以试着加这个参数看看,就是authSource=admin。果然,加上这个参数之后,就可以成功的连接上数据库了,看来还是官网文档靠谱,遇到问题一定要先看看官方文档说明,很多问题有可能就解决了。
以上就是Nodejs连接设置了账号密码的MongoDB数据库的一些坑,在网上没有看到解决方案,希望大家看到了有所启示。







以上是关于Nodejs通过账号密码连接MongoDB数据库的主要内容,如果未能解决你的问题,请参考以下文章

mongodb怎么用用户名密码登录

linux怎么修改mongodb的用户名和密码

NodeJS与mongoDB的连接错误

Linux安装MongoDB5.0.7的流程Linux系统下安装mongoDB5.0.7并且使用MongoDBCompass进行远程连接测试MongoDB设置账号密码验证登陆

Nodejs + Mongo db 使用用户名和密码连接服务器数据库

何时在 Nodejs 中关闭 MongoDB 数据库连接