#2 MongoDB 添加--auth 連接mongoose

1.設(shè)置用戶并驗(yàn)證

初始設(shè)置可以參考這里 jiayi github mongodb

  1. 安裝MongoDB(我的mongodb版本為 V3.4.4
  2. 設(shè)置開啟驗(yàn)證 --auth 使用這個(gè)flag
  3. 給計(jì)算機(jī)默認(rèn)的自帶的 admin 設(shè)置一個(gè)帳號,相當(dāng)于超級管理員
  4. 建立自定義數(shù)據(jù)庫,設(shè)置用戶帳號,并設(shè)置相應(yīng)的權(quán)限

如果要使用mongoose連接mongodb則需要給數(shù)據(jù)庫設(shè)置帳號密碼和權(quán)限,首先我們需要添加用戶

下面主要講一下具體的命令:

# 1.進(jìn)入mongo環(huán)境
> mongo

# 2.切換到 'admin' 數(shù)據(jù)庫
> use admin

# 3.給admin設(shè)置用戶
# user: 用戶名 
# pwd: 用戶密碼
# roles: 用來設(shè)置用戶的權(quán)限,比如讀,讀寫,寫等等
> db.createUser({user: 'root', pwd: '123456', roles: ['root']})

# 4.驗(yàn)證該用戶 'db.auth(用戶名,用戶密碼)'
> db.auth('root', '123456')
# 如果返回 '1'表示驗(yàn)證成功, 如果是 '0' 表示驗(yàn)證失敗

# 5.自定義數(shù)據(jù)庫,并添加用戶
# a.創(chuàng)建 'example' 數(shù)據(jù)庫
> use example

# b.創(chuàng)建用戶
> db.createUser({user: 'james', pwd: '123456', roles: [{role: 'readWrite'}]})

# c.驗(yàn)證該用戶
> db.auth('james', '123456')
# 如果返回 '1'表示驗(yàn)證成功, 如果是 '0' 表示驗(yàn)證失敗

主要使用到的方法:

  • db.createUser()
  • db.auth()

另外刪除用戶可以使用:

  • db.dropUser(用戶名)

給用戶設(shè)置具體的操作權(quán)限 roles 有 (這個(gè)的設(shè)置對數(shù)據(jù)的操作權(quán)限影響很大,我暫時(shí)還不是很清楚,有待了解):

權(quán)限種類.jpg

關(guān)于權(quán)限blog

注意

如果修改了用戶權(quán)限,則需要在用戶所在的數(shù)據(jù)庫再次認(rèn)證才能生效

# 比如將上面 'example' 數(shù)據(jù)庫下的用戶 'james' 的權(quán)限修改
{
    "_id" : "example.james",
    "user" : "james",
    "db" : "example",
    "roles" : [ 
        {
            "role" : "readWrite", // 讀寫
            "db" : "example"
        }
    ]
}

# 修改為只讀的
{
    "_id" : "example.james",
    "user" : "james",
    "db" : "example",
    "roles" : [ 
        {
            "role" : "read", // 只讀
            "db" : "example"
        }
    ]
}

# 再次認(rèn)證
> mongo
> use example
> db.auth('james', '123456')
# 如果返回 '1'表示驗(yàn)證成功, 如果是 '0' 表示驗(yàn)證失敗

使用Robomongo連接

  1. 創(chuàng)建
  2. 點(diǎn)擊驗(yàn)證,開啟驗(yàn)證-> 輸入帳號和密碼(管理員用戶的帳號和密碼,比如上面的用戶名root, 明碼123456) -> 點(diǎn)擊 'test',查看是否通過驗(yàn)證
1.創(chuàng)建.jpg
2設(shè)置用戶登錄.jpg

使用mongose連接數(shù)據(jù)庫

一般node項(xiàng)目連接 mongodb都會(huì)選擇 mongose,下面是初步的連接教程

1.下載npm包

npm i -S express mongose

2.具體代碼:

// app.js
var express = require('express');
var app = express()
var mongose = require('mongose');

# mongodb 為協(xié)議
# james: 連接數(shù)據(jù)庫的用戶
# 123456: 該用戶的密碼
# localhost: 本地的地址(因?yàn)檫@是本地環(huán)境)
# 27017: mongodb的端口號(這個(gè)一般是默認(rèn)值,也可以進(jìn)行修改)
# example: 數(shù)據(jù)庫的名字
var db = 'mongodb://james:123456@localhost:27017/example'

// 連接
mongose.connect(db);

var connection = mongose.connection;
connection.on('connected', function() {
  console.log('Mongoose 連接到 example數(shù)據(jù)庫');
}) 
connection.once('open', function(callback){
    console.log('數(shù)據(jù)庫啟動(dòng)了');
    // app.listen(8080, () => console.log('Express server listening on port 8080'));
})

使用 node app 運(yùn)行js,成功連接則會(huì)輸出上面打印的信息。

總結(jié)

大致的連接過程就是這些,設(shè)置的時(shí)候時(shí)候,如果查看教程請注意mongodb版本號。

mongodb 創(chuàng)建用戶

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容