1.設(shè)置用戶并驗(yàn)證
初始設(shè)置可以參考這里 jiayi github mongodb
- 安裝MongoDB(我的mongodb版本為
V3.4.4
) - 設(shè)置開啟驗(yàn)證
--auth
使用這個(gè)flag - 給計(jì)算機(jī)默認(rèn)的自帶的
admin
設(shè)置一個(gè)帳號,相當(dāng)于超級管理員 - 建立自定義數(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
注意
如果修改了用戶權(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連接
- 創(chuàng)建
- 點(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版本號。