在window中创建第2个mongodb数据的方法

有时候我们在很多文件夹创建了后端代码都用的是同一个Mongodb的集合collection,也都用的同一个node_modules/mongodb的驱动

但在脱离这个node_modules/mongodb驱动 的时候,我们另外创建一个node_modules/mongodb驱动 应该怎么搭建呢?

mongodb数据库安装在E:\mongodb中,在nodejs中node_modules\mongodb都是驱动文件

  • 比如以前一直用D:\backend\node_modules\mongodb这个驱动mongodb数据库
  • 今天我们在要D盘新建一个D:\backendAPI,这个时候我们初始化npm init -y安装了express,也安装了mongodb驱动,但连接的还是老数据,怎么连接新的数据库?
  • 要连接新数据库,mongodb只认端口,所以我们得先改mongod.cfg的配置

在D盘创建

javascript 复制代码
mkdir backendAPI
cd backendAPI
mkdir mongoData  //创建一个存放mongo数据的文件夹
mkdir mongoLogs  //创建一个存放Mongo日志的文件夹

//在安装数据库中找到mongod.cfg配置文件
E:\mongodb\mongod.cfg
//复制一份到D:\backendAPI中进行修改

修改mongod.cfg配置文件

javascript 复制代码
storage:
//存放mongo数据的文件路径
  dbPath: D:\backendAPI\mongoData         

//存放mongo日志的文件路径
systemLog:
  destination: file
  logAppend: true
  path: D:\backendAPI\mongoLogs\mongod.log   

//这里改的端口
net:
  port: 28017      //你可以改成你想要的端口如27018,27019等                     
  bindIp: 127.0.0.1

security:
  authorization: enabled   

现在启动配置文件

javascript 复制代码
用管理员身份进入命令提示符cmd,再进入你的E:\mongodb\bin目录

执行
mongod --config "D:\backendAPI\mongod.cfg"

如果有错误说明你哪儿写错了
如果什么反应都没有才是正常的,这个时候你不要关闭这个cmd
再打另外一个cmd进行登陆尝试
 
mongosh --port 28017 

如果显示test>  说明配置生效了

这只是临时的启动这个配置,如果你想长期的启动这个配置,可以进行配置安装
cd /d E:\mongoDB\bin
mongod --config "D:\backendAPI\mongod.cfg" --install

然后启动mongodb
net start MongoDB

检查数据库状态的正确方法

javascript 复制代码
// 查看所有数据库(包括系统数据库)
show dbs

// 或者使用更详细的命令
db.adminCommand({listDatabases: 1})

// 查看当前数据库的状态
db.stats()

// 查看所有集合(包括系统集合)
show collections

初始化admin数据库(如果需要)

javascript 复制代码
use admin

// 创建管理员用户
db.createUser({
  user: "admin",
  pwd: "your_password",
  roles: ["root"]
})

// 创建后你就能看到系统集合了
show collections

// 查看当前连接信息
db.getMongo()

// 查看服务器状态
db.serverStatus()

// 查看当前数据库
db.getName()

//查看用户信息
db.getUsers()

// 使用创建的用户认证
db.auth("admin", "yourSecurePassword")

// 检查权限
db.runCommand({usersInfo: "admin", showPrivileges: true})

如果你要创建更精细化的用户权限可以这样

javascript 复制代码
// 简化版本(适合单机开发)
db.createUser({
  user: "admin",
  pwd: "yourSecurePassword",
  roles: ["root"]
})

// 或者更精确的权限分配
db.createUser({
  user: "admin",
  pwd: "yourSecurePassword",
  roles: [
    { role: "userAdminAnyDatabase", db: "admin" },
    { role: "readWriteAnyDatabase", db: "admin" },
    { role: "dbAdminAnyDatabase", db: "admin" }
  ]
})



//只读某个集合的用户

db.createUser({
  user: "readonly_user",
  pwd: "password123",
  roles: [
    {
      role: "read",
      db: "your_database_name",
      // 限制只能访问特定集合
      privileges: [
        {
          resource: { db: "your_database_name", collection: "specific_collection" },
          actions: ["find"]
        }
      ]
    }
  ]
})


//读写某个集合的用户

db.createUser({
  user: "readwrite_user",
  pwd: "password123",
  roles: [
    {
      role: "readWrite",
      db: "your_database_name",
      privileges: [
        {
          resource: { db: "your_database_name", collection: "specific_collection" },
          actions: ["find", "insert", "update", "remove"]
        }
      ]
    }
  ]
})


//自定义精确权限的用户

db.createUser({
  user: "custom_user",
  pwd: "password123",
  roles: [],
  privileges: [
    {
      resource: { db: "your_database_name", collection: "users" },
      actions: ["find", "insert", "update"]  // 只能查找、插入、更新,不能删除
    },
    {
      resource: { db: "your_database_name", collection: "products" },
      actions: ["find"]  // 只能读取产品数据
    }
  ]
})

//一个博客用户示例
// 创建只能管理文章集合的用户
db.createUser({
  user: "article_manager",
  pwd: "article_password",
  roles: [
    {
      role: "readWrite",
      db: "blog_db",
      privileges: [
        {
          resource: { db: "blog_db", collection: "articles" },
          actions: ["find", "insert", "update", "remove"]
        },
        {
          resource: { db: "blog_db", collection: "comments" },
          actions: ["find", "insert"]  // 可以读评论和添加评论,但不能修改删除
        }
      ]
    }
  ]
})



//查看和管理用户权限
// 查看用户信息
db.getUser("article_manager")

// 查看用户权限详情
db.runCommand({usersInfo: "article_manager", showPrivileges: true})

// 更新用户权限
db.updateUser("article_manager", {
  roles: [
    {
      role: "readWrite",
      db: "blog_db",
      privileges: [
        {
          resource: { db: "blog_db", collection: "articles" },
          actions: ["find", "insert", "update"]
        }
      ]
    }
  ]
})

// 删除用户
db.dropUser("article_manager")

如果我们只要简单的创建一个普通用户对某个数据库的读、存、更新、删除,只需要这样

javascript 复制代码
//这里有个区别,看你是use blog_db   还是use admin里面设置普通用户,在写nodejs代码登陆验证必须要写对,不然登陆上不
db.createUser({
  user: "article_manager",
  pwd: "article_password",
  roles: [
    { role: "readWrite", db: "blog_db" }
  ]
})


//nodejs代码中,如果你是在admin中设置的普通用户jkchen就必须这样写
let urlPath='mongodb://jkchen:123456@localhost:28017/?authSource=admin';
new MongoClient(urlPath);

//nodejs代码中,如果你是在blog_db中设置的普通用户jkchen就必须这样写
let urlPath='mongodb://jkchen:123456@localhost:28017/blog_db?authSource=blog_db';

//简洁写法
let urlPath='mongodb://jkchen:123456@localhost:28017/blog_db';
new MongoClient(urlPath);
相关推荐
q***96582 分钟前
Windows版Redis本地后台启动
数据库·windows·redis
q***81645 分钟前
【Redis】centos7 systemctl 启动 Redis 失败
数据库·redis·缓存
q***09808 分钟前
MySQL 常用 SQL 语句大全
数据库·sql·mysql
q***64979 分钟前
VS与SQL Sever(C语言操作数据库)
c语言·数据库·sql
无敌最俊朗@34 分钟前
Qt面试题day01
java·数据库·面试
ivanfor6662 小时前
多租户架构的三级权限体系:设计逻辑与精准控制实现
java·开发语言·数据库
TDengine (老段)3 小时前
TDengine IDMP 重塑智慧水务运营(内附 Step by Step 步骤)
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
LSL666_6 小时前
1 概述及简单登录(不涉及数据库)
数据库·servlet
q***06479 小时前
MySQL的UPDATE(更新数据)详解
数据库·mysql
8***B9 小时前
MySQL性能
数据库·mysql