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

  • 相关阅读:
    C#操作REDIS例子
    A C# Framework for Interprocess Synchronization and Communication
    UTF8 GBK UTF8 GB2312 之间的区别和关系
    开源项目选型问题
    Mysql命令大全——入门经典
    RAM, SDRAM ,ROM, NAND FLASH, NOR FLASH 详解(引用)
    zabbix邮件报警通过脚本来发送邮件
    centos启动提示unexpected inconsistency RUN fsck MANUALLY
    rm 或者ls 报Argument list too long
    初遇Citymaker (六)
  • 原文地址:https://www.cnblogs.com/anxiaoyu/p/9233306.html
Copyright © 2011-2022 走看看