標籤:現在 建立使用者和密碼 官方 .net username cat 不成功 creat ons
轉自77435804#commentBox
1.建立管理員
首先開啟Mongo服務,然後切換admin資料庫,一開始是沒有這個資料庫的。
> use admin
2.然後建立使用者和密碼:
> db.createUser({user:’root’,pwd:’root1234’,roles:[‘root’]})
3.建立了管理員帳號和密碼之後,然後運行Mongo服務的時候加上 –auth參數:
mongod --dbpath "F:mongodb\data\db" --logpath "F:\mongodb\data\log\MongoDB.log" --auth
4.這時候如果直接登入資料庫,想查看資料,是看不了的,需要用以下命令才能登入成功,如果列印出來一個’1’,說明登入成功:
> db.auth(‘root‘,‘root1234‘)1
到這一步,MongoDB設定帳號密碼就已經完成了,接下來我需要用Nodejs來串連資料庫,我用的是mongoose這個庫,他提供了Schema、Model和Document對象,用起來非常方便,但是當我按照官網的例子來寫時發現並不成功,如下:
var mongoose=require("mongoose")mongoose.connect(‘mongodb://root:[email protected]:27017/test‘);
一直都是報錯,說驗證失敗
後面查了很多資料也沒有查到,無奈只有再去研究官方API,在官方API中看到:
mongoose.connect(‘mongodb://username:[email protected]:port/database?options...‘);
這是官網串連的例子,後面有一個options參數,我懷疑這裡是否需要寫一些參數,但是在實際的例子中沒有看到後面寫任何參數,然後找到官網中對於options的說明,如下:
看到第一個參數authSource,他的描述是:If the database authentication is dependent on another databaseName. 他的意思是如果資料庫認證需要依賴於另外一個資料庫名稱。我想了想,我們的資料庫帳號密碼不是儲存admin資料庫嘛,而我們現在需要串連的是另外一個資料庫,可以試著加這個參數看看,就是authSource=admin。果然,加上這個參數之後,就可以成功的串連上資料庫了,看來還是官網文檔靠譜,遇到問題一定要先看看官方文檔說明,很多問題有可能就解決了。
以上就是Nodejs串連設定了帳號密碼的MongoDB資料庫的一些坑,在網上沒有看到解決方案,希望大家看到了有所啟示。
Nodejs通過帳號密碼串連MongoDB資料庫