mongoDB数据库设置账号密码验证

一般默认安装mongoDB到电脑的时候,默认数据库是没有设置管理员账号密码的。
所以为了安全问题,必须需要设置一下
mongoDB下载地址:下载地址

  1. 以系统管理员的方式运行powershell
  2. 进入mongo(不需要账号验证)
mongo

在这里插入图片描述

  1. 查看数据库 show dbs
show dbs

在这里插入图片描述

  1. 切换到admin数据库 use admin
  2. 创建超级管理员账户 db.createUser()
use admin
db.createUser({ user:"设置管理员账号", pwd:"设置管理员密码", roles:["root"] })

  1. 切换到blog数据库 use blog
  2. 创建普通账号 db.createUser()
    普通账号可指定管理某个数据库
use blog
db.createUser({ user:"普通账号", pwd:"设置密码", roles:["readWrite"] })


PS:roles属性是设置该账号对mongoDB数据库的权限
mongodb 一共有哪些权限:

 1. 数据库用户角色:read、readWrite; 

 2. 数据库管理角色:dbAdmin、dbOwner、userAdmin; 

 3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;

 4. 备份恢复角色:backup、restore;

 5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

 6. 超级用户角色:root 

 // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)

 7. 内部角色:__system

 read:允许用户读取指定数据库

 readWrite:允许用户读写指定数据库

 dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile

 userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户

 clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。

 readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限

 readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限

 userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限

 dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。

 root:只在admin数据库中可用。超级账号,超级权限
  1. 退出mongo服务
exit

在这里插入图片描述

  1. 卸载mongodb服务
    1. 停止服务 net stop mongodb
    2. mongod --remove
net stop mongodb

在这里插入图片描述

mongod --remove

在这里插入图片描述

  1. 创建mongodb服务
    路径指定为数据库安装目录的data文件夹和log文件夹下的mongod.log文件
    –auth 表示启动进入mongo需要账号密码验证
mongod --logpath="D:\数据库的路径\log\mongod.log" --dbpath="D:\数据库的路径\data" --install –-auth

在这里插入图片描述
在这里插入图片描述

  1. 重新启动mongodb服务
net start mongodb

在这里插入图片描述

  1. 重新进入mongo(需要账号验证)
mongo --host 127.0.0.1 --port 27017 -u "账号" -p "密码" --authenticationDatabase "admin"

在这里插入图片描述

  1. 在项目中使用账号连接数据库
    这里以node的express框架的mongoose为例

超级管理员连接数据库

// 连接mongodb数据库
const mongoose = require("mongoose"); // 引入mongoDB操作模块

const dbUsername = "root"; // 数据库管理员连接账号
const dbPassword = "root"; // 数据库管理员的密码
const dbHost = "localhost"; // 数据库路径
const dbPort = 27017; // 数据库端口(可省略)
const db = "blog"; // 需要操作的数据库

// authSource=认证源
// (使用超级管理员账号连接其他数据库时的认证,普通账号不用设置)
// 数据库认证需要依赖于另外一个数据库名称
const dbAuth = "admin"; // 认证源

mongoose
  .connect(`mongodb://${dbUsername}:${dbPassword}@${dbHost}:${dbPort}/${db}?authSource=${dbAuth}`, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    useFindAndModify: false,
    useCreateIndex: true,
  })
  .then(() => {
    console.log("mongoDB数据库连接成功");
  })
  .catch((err) => {
    console.log(err, "mongoDB数据库连接失败");
  });

普通账号连接指定数据库

  // 连接mongodb数据库
const mongoose = require("mongoose"); // 引入mongoDB操作模块

const dbUsername = "user"; // 数据库普通账号
const dbPassword = "123456"; // 数据库普通账号的密码
const dbHost = "localhost"; // 数据库路径
const dbPort = 27017; // 数据库端口(可省略)
const db = "blog"; // 需要操作的数据库

mongoose
  .connect(`mongodb://${dbUsername}:${dbPassword}@${dbHost}:${dbPort}/${db}`, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    useFindAndModify: false,
    useCreateIndex: true,
  })
  .then(() => {
    console.log("mongoDB数据库连接成功");
  })
  .catch((err) => {
    console.log(err, "mongoDB数据库连接失败");
  });

收. 这是根据自己的理解整理的笔记,希望对你有帮助

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值