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: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數據庫的一些坑,在網上沒有看到解決方案,希望大家看到了有所啟示。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM