一步一步搭建react应用-mongodb开启身份认证

git地址

  • 通过不认证的方式启动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) {

        }
    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,936评论 6 342
  • 一、MongoDB安装及配置 1.1、下载安装程序 MongoDB提供了linux平台上32位和64位的安装包,你...
    misszero阅读 1,247评论 1 2
  • 开启授权认证之后,只有经过授权的用户才能够连接到MongoDB,才允许访问相关的资源,增加数据库的安全性与稳定性。...
    Uzero阅读 1,998评论 1 1
  • NoSql数据库优缺点 在优势方面主要体现在下面几点: 简单的扩展 快速的读写 低廉的成本 灵活的数据模型 在不足...
    dreamer_lk阅读 2,765评论 0 6
  • 从周五到周六这接近一天的时间里,我经历了一件特别煎熬的事情。虽然没有人批评我,但我还是陷入极度自责无法自拔。 事情...
    木木1994阅读 223评论 0 0