- 通過不認證的方式啟動Mongodb
mongod --port 3007 --config mongod.conf
mongo 連接實例 mongo --port 3307
創建用戶超級管理員
use admin
db.createUser(
{
user: "myAdmin",
pwd: "XXXXX",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
- 重啟mongodb,加上訪問控制
mongod --port 3007 --config mongod.conf --auth
- 認證
連接時認證
mongo --port 3307 -u 'xxx' -p 'xxx' --authenticationDatabase "admin"
連接后認證
mongo --port 3307
use admin
db.auth('username','pwd')
- 為其他庫創建用戶
use movies
db.createUser(
{
user: "moviesAdmin",
pwd: "XXXX",
roles: [ { role: "readWrite", db: "movies" },
{ role: "read", db: "db2" } ]
}
)
//添加user moviesAdmin,對movies有讀寫權限,對db2有讀權限
?db.js
const {MongoClient,ObjectId} = require('mongodb')
const f = require('util').format
const user = encodeURIComponent('moviesAdmin')
const pwd = encodeURIComponent('xxxxx')
const authMechanism = 'DEFAULT'
let db_name='Movies'
if(process.env.NODE_ENV=='test'){
db_name='Movies_test'
}
const url = f(`mongodb://%s:%s@localhost:3307/${db_name}?authMechanism=%s`, user, pwd, authMechanism)
module.exports = {
connect() {
return MongoClient.connect(url).catch(e=>{
console.log(e)
})
},
id(id) {
try {
if (id) {
return new ObjectId(id)
} else {
return new ObjectId()
}
} catch (e) {
}
}
}