在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);
相关推荐
非凡的世界10 分钟前
Thinkphp8 Redis队列与消息队列topthink/think-queue 原创
数据库·redis·bootstrap·thinkphp
yookay zhang12 分钟前
DM线程的管理知识学习
数据库
l1t1 小时前
测试DuckDB电子表格读取插件rusty_sheet 0.2版
数据库·rust·插件·xlsx·duckdb
TiAmo zhang1 小时前
SQL Server 2019实验 │ 表数据插入、修改和删除
数据库·oracle
慕容雪_1 小时前
MySQL去除表、字段注释
数据库·mysql
zym大哥大1 小时前
C++客服端访问redis
数据库·redis·缓存
洛克大航海2 小时前
Ubuntu安装Hbase
大数据·linux·数据库·ubuntu·hbase
小蒜学长2 小时前
springboot餐厅信息管理系统设计(代码+数据库+LW)
java·数据库·spring boot·后端
Justin_192 小时前
mysql数据库高级特性(一)
数据库·mysql
邂逅you3 小时前
用python操作mysql之pymysql库基本操作
数据库·python·mysql