mongoDB开启权限认证及node连接数据库的配置

1.打开cmd命令窗口
2.输入mongo,如图

在这里插入图片描述

3.创建管理用户(这一步一定要给我先做了)
use admin
db.createUser( {user: "admin",pwd: "123456",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]})
4.找到mongod.cfg文件

4.1 windows系统的话,一般在c盘的Program Files\MongoDB\Server\4.2\bin下
4.2 linux系统的一般在/etc 下

5.在mongod.cfg添加如下代码(注意缩进):
security:
  authorization: enabled
6.重启mongoDB
systemctl restart mongod.service
7.再进入cmd,输入mongo. 因为开启的权限,所以这次一定要先
use admin
db.auth("admin","123456")
8.创建你的数据库,并给这个数据库一个读写权限的账户(以下都以ceshi数据库为例子)
use ceshi
db.createUser({user:"ceshi",pwd:"123456",roles:[{role:"readWrite",db:"ceshi"}]})

出现如图:
在这里插入图片描述
则为成功

出现如图:
在这里插入图片描述
则为失败,原因就是你没使用admin先登陆!

9.node连接数据库,以连接本地数据库为例
module.exports = app => {
    const mongoose = require("mongoose")
    mongoose.connect('mongodb://ceshi:123456@127.0.0.1:27017/ceshi', {
        useNewUrlParser: true,
        useUnifiedTopology: true
    })
}
以下部分是我自己折腾,最好不看

其实你会发现admin用户并没有查看ceshi数据库的权限,那是因为mongoDB本来就没有什么管理管理员,赋给他的userAdminAnyDatabase就是管理用户的权限,查看数据库的权限在ceshi这个用户.
若你要赋给admin读写ceshi这个数据的权限,也可以通过

db.grantRolesToUser("admin",[{role:"readWrite",db:"ceshi"}])

但通过admin验证,则node连接数据库部分需要加上authSource,即:

module.exports = app => {
    const mongoose = require("mongoose")
    mongoose.connect('mongodb://admin:123456@127.0.0.1:27017/ceshi?authSource=admin', {
        useNewUrlParser: true,
        useUnifiedTopology: true
    })
}

因为admin用户的账号密码存储在admin数据库,依赖于另外一个数据库.具体自己看mongoDB的文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值