• 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: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数据库的一些坑,在网上没有看到解决方案,希望大家看到了有所启示。

  • 相关阅读:
    Cat- Linux必学的60个命令
    Cmp- Linux必学的60个命令
    Diff- Linux必学的60个命令
    ls- Linux必学的60个命令
    mv- Linux必学的60个命令
    Find- Linux必学的60个命令
    libvirt
    PHP 设计模式 笔记与总结(2)开发 PSR-0 的基础框架
    Java实现 LeetCode 147 对链表进行插入排序
    Java实现 LeetCode 146 LRU缓存机制
  • 原文地址:https://www.cnblogs.com/anxiaoyu/p/9233306.html
Copyright © 2020-2023  润新知