在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);
相关推荐
疯狂大嘴5 小时前
MongoDB备份数据库
数据库·mongodb
凄凉山谷的风 OL5 小时前
解决MySQL的sql_mode=only_full_group_by错误提示
数据库
TDengine (老段)5 小时前
TDengine 聚合函数 SPREAD 用户手册
大数据·数据库·sql·物联网·时序数据库·tdengine·涛思数据
TDengine (老段)5 小时前
TDengine 时区配置问题全解
大数据·数据库·时序数据库·tdengine·涛思数据
IvorySQL2 天前
PostgreSQL 全表 count 优化实践:从 SeqScan 痛点分析到 heapam 改进与性能突破
数据库·postgresql·oracle·deepseek·ivorysql
ypf52083 天前
Docker 中安装 PostgreSQL 16
数据库
字节跳动数据平台4 天前
火山引擎多模态数据湖:基于 Daft 与 Lance,构筑 AI 时代数据湖新范式
数据结构·数据库·数据挖掘
倔强的石头_4 天前
零门槛体验国产数据库硬核实力 —— 金仓 KingbaseES 在线体验平台全解析
数据库
AAA修煤气灶刘哥5 天前
数据库优化自救指南:从SQL祖传代码到分库分表的骚操作
数据库·后端·mysql