Nodejs通過帳號密碼串連MongoDB資料庫

來源:互聯網
上載者:User

標籤:現在   建立使用者和密碼   官方   .net   username   cat   不成功   creat   ons   

轉自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:[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資料庫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.