MongoDB权限验证开启与mongoose数据库配置

article/2025/8/21 19:15:06

在这里插入图片描述

Express项目最常用的数据库是mongodb,并搭配模块mongoose完成对数据库的访问。
本文假设您已经正确的完成了mongodb数据库的安装,下面是针对mongodb的设置和项目配置工作。

一、为mongodb数据库设置权限验证

mongodb安装完成之后,默认情况下是关闭权限验证的,也就是说不需要使用任何密码就可以访问数据库中的数据,这种做法在生产环境是非常危险的行为。
如何查看我们的mongodb数据库是否开启了权限验证呢?非常简单,我们只需要打开mongodb的安装目录,在其中找到名为/bin/mongod.cfg的配置文件,查看其中security选项下的authroization配置,如果该选项被注释或者为空,表示没有开启权限验证。

#security: 
#authorization: enabled

配置文件中的#表示注释,这里虽然authorization被设置为了enabled,但由于被注释掉了所以仍然表示没有开启权限验证。

如果您的mongodb还没有开启权限验证,可以跟随下面的步骤完成设置。

1.1 创建超级管理员

mongodb在完成安装之后,默认会创建三个数据库,分别为adminconfiglocal。其中,admin数据库的管理员就是mongodb的超级管理员。
创建超级管理员需要使用两个命令:

use admindb.createUser({user:'admin',pwd:'123456',roles:[{role:'root',db:'admin'}]
})

以上命令会为admin数据库创建一个名为admin的超级管理员(角色为root),其密码为123456(生产环境请务必使用复杂的密码,以保证数据库安全)。
在超级管理员创建完成之后,我们可以使用命令show users查看当前数据库中的用户,超级管理员创建的过程如下:

> use admin
switched to db admin
> db.createUser({
... user:'admin',
... pwd:'123456',
... roles:[{role:'root',db:'admin'}]
... })
Successfully added user: {"user" : "admin","roles" : [{"role" : "root","db" : "admin"}]
}
> show users
{"_id" : "admin.admin","userId" : UUID("c17aa709-a1d8-4a76-8d5b-0b61bb589d49"),"user" : "admin","db" : "admin","roles" : [{"role" : "root","db" : "admin"}],"mechanisms" : ["SCRAM-SHA-1","SCRAM-SHA-256"]
}

1.2 修改mongod.cfg配置

修改/bin/mongod.cfg文件中的security选项如下:

security: authorization: enabled

1.3 重启mongodb服务

  1. 使用快捷键win + R,并输入services.msc,然后回车

image.png

  1. 在服务列表中找到MongoDB Server (MongoDB)
  2. 右键选择重新启动

image.png

  1. 等待服务重新启动

image.png

1.4 使用密码登录mongodb

使用如下命令,连接数据库,如果能够成功的连接数据库,说明我们已经开启了权限验证,并创建了超级管理员。

> mongo admin -u admin -p 123456

在开启权限验证之后,使用mongo命令仍然可以连接mongodb数据库,但是,如果我们使用show dbs命令查看数据库就会遇到权限错误,或者看不到数据库列表。

在完成超级管理员的创建之后,我们还需要再为项目数据库创建一个用户,用于访问项目数据库。
这就和使用Linux系统时不直接使用超级管理员root直接操作系统资源是同样的道理。

1.5 为项目数据库创建用户

假设现在已经创建了一个用于项目的数据库db_ahoh,可以使用以下命令创建一个只能访问ad_ahoh的用户ahohAdmin

use db_ahohdb.createUser({user:"ahohAdmin",pwd:"123456",roles:[{role:"dbOwner",db:"db_ahoh"}]
})

以上命令为数据库db_ahoh创建了一个名为ahohAdmin的用户,这个用户的角色是dbOwner,只能访问db_ahoh一个数据库。

mongodb中,创建数据库只需要往数据库中插入一条数据即可,例如,下面的两条命令就可以创建数据库db_ahoh:

  1. use db_ahoh
  2. db.tb_users.insert({username:"xiaoming"})

上述命令在创建数据库的时候,顺便创建了一个表tb_users,并插入了一条数据。

1.6 使用项目数据库用户登录

在完成ahohAdmin用户创建之后,可以使用如下命令连接数据库:

mongo db_ahoh -u ahohAdmin -p 123456

此时,如果我们执行show dbs指令,只能看到一个数据库:

> show dbs
db_ahoh  0.000GB

二、使用mongoose连接数据库

mongoose模块是操作mongodb的 不二之选,我们需要先安装mongoose包之后,再进行数据库连接操作。

2.1 安装mongoose模块

使用以下命令,安装mongoose模块:

npm i mongoose

2.2 编辑数据库连接URI

和其他关系型数据库类似,在连接数据库的时候,需要使用一个类似于网页连接的字符串,用于指明需要连接的数据库名称、端口、IP、用户名和密码等信息,格式如下:

mongodb://<username>:<password>@<IP>:<port>/<database>

如果您和本文配置的数据库完全相同,那么您可以使用下面的URI连接mongodb数据库:

mongodb://ahohAdmin:123456@localhost:27017/db_ahoh

这个重要的链接常常会放置在一个独立的配置文件中,而不是硬编码在代码里。

2.3 创建配置文件config.js

node项目中,我们通常会使用一个名为config.js的文件存放一些重要的配置信息。
在项目根目录下创建文件夹config/,然后在其中创建一个名为config.js的配置文件。
编辑配置文件中的内容如下:

/*  config/config.js */
module.exports = {mongoURI: "mongodb://ahohAdmin:123456@localhost:27017/db_ahoh",
}

2.4 使用mongoose连接数据库

在项目的主文件app.js中执行以下步骤,连接mongodb数据库。

  1. 引入mongoose模块
const mongoose = require('mongoose')
  1. 使用uri连接数据库
const dbUrl = require('./config/config').mongoURI
mongoose.connect(dbUrl).then(()=>{ console.log('MongoDB connected!')  }) //连接成功输出 MongoDB connected!.catch(err => console.log(err))
  1. 测试连接是否成功

执行命令npm run serve启动系统,观察控制台输出。

PS E:\Code\Express\express-server> npm run serve> express-server@0.0.0 serve
> nodemon ./bin/www[nodemon] 2.0.16
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node ./bin/www`
MongoDB connected!							

输出MongoDB connected!表示数据库连接成功。

三、项目代码

02-mongodb-connection


http://chatgpt.dhexx.cn/article/kDF4Q1H1.shtml

相关文章

oracle安装成功验证

验证安装成功 打开sql命令黑窗口 输入命令 conn system 输入密码&#xff0c;密码是看不见的。 就连接好了。 接着要安装数据库管理系统&#xff08;一个&#xff09; 数据库&#xff08;多个&#xff09; SID&#xff1a; 数据库的唯一标识符&#xff0c;就是指数据库名 or…

python 密码验证

题目描述&#xff1a; (1)模拟登陆界面&#xff0c;判别用户名和密码&#xff0c;给出合适的提示&#xff0c;如果超过三次&#xff0c;锁定输入。用代替密码&#xff1b;或者最新输入显示&#xff0c;前面的变成&#xff1b;安全性措施。 (2)同时添加如下图的加强验证&#x…

MMDetection的安装及验证

参考&#xff1a;安装 — MMDetection 2.22.0 文档 进入openMMLab社区好久了&#xff0c;但是前面都是在学一些基础知识&#xff0c;最近看到了目标检测的部分&#xff0c;然后尝试配置了一下mmDet的环境&#xff0c;过程中踩了很多坑&#xff0c;也用了很长时间&#xff0c;在…

java环境变量配置验证_怎么验证Java环境变量配置成功

Java环境变量已经配置完了,不知道行不行,那么怎么验证Java环境变量配置成功呢?下面是学习啦小编收集整理的怎么验证Java环境变量配置成功&#xff0c;希望对大家有帮助~~ 验证Java环境变量配置成功的方法 方法/步骤 首先&#xff0c;在桌面右击&#xff0c;选择“文本文档”&a…

验证tomcat安装成功

安装之后: 1.到安装目录下找startup.bat不闪退,并出现以下图2为成功安装: 再打开谷歌浏览器输入: localhost:8080验证. Tomcat服务器介绍和使用: 服务器的概念和作用: 问题: 学习了java编程之后,java代码的一个很重要的作用就是进行数据的处理,但是目前来说我们运行编写的…

京东手势验证

先给大家看看京东的验证码有多变态 长这个样子&#xff0c;作者测试过程中在浏览器最多划了二十几次才通过&#xff0c;搞到我都开始怀疑根本就过不去。jd验证码花了我一周多时间才搞完&#xff0c;一直卡在这个轨迹上面&#xff0c;想用深度学习又不知道弄出来轨迹该怎么生成&…

[ant design vue] 表单验证成功,提示信息不显示

以上是原图以及源代码&#xff0c;input中带有表单验证&#xff0c;但是输入0以后却不显示报错信息&#xff0c;后来通过大哥指点&#xff0c;因为一个a-form-item只验证一个input,所以给每一个input加一个a-form-item问题解决。代码及效果如下&#xff1a;

怎么验证mysql安装成功_mysql如何验证是否安装成功

mysql验证是否安装成功的方法&#xff1a;1、打开DOS窗口&#xff0c;输入status命令查看MySQL版本信息&#xff1b;2、打开MySQL 5.7 Command Line Client程序&#xff0c;打开当前MySQL服务器状态&#xff0c;输入相关命令能显示当前的数据库列表即可。 相关学习推荐&#xf…

局域网内构建自己的ntp校时服务器并验证成功与否

局域网内构建自己的ntp校时服务器并验证成功与否 最近委座提了个要求&#xff0c;模拟客户那边的环境&#xff0c;局域内网搭建个ntp校时服务器&#xff0c;然后让其他服务器跟这个ntp服务器保持一致的时间。 开始干吧&#xff0c;分2步走&#xff1a;1.先找两台centos7.x的服…

Vue Element表单验证成功后,清空表单

this.$refs.ruleForm.resetFields() 这是用来清空表单的代码&#xff0c;实际使用可以放在显示操作成功的代码下面&#xff0c;在接口调用成功后执行。 出处是&#xff1a;

JWT的介绍与应用

目录 2.JWT的应用场景 3.JWT的应用详解 4.为什么要用JWT 2.1 传统Session认证的弊端 2.2 JWT认证的优势 5.JWT结构 1.Header 2.Payload 3.Signature 6.JWT的种类 JSON Web Token&#xff08;JWT&#xff09;是一个开放式标准&#xff08;RFC 7519&#xff09;&#xf…

判断MySQL安装是否成功的两种验证方法

如何判断MySQL是否安装成功&#xff1f; 一、命令提示符cmd窗口验证二、MySQL控制台验证 一、命令提示符cmd窗口验证 键盘winR打开命令提示符&#xff0c;输入cmd。 在电脑中找到安装好的MySQL的bin文件目录 。这是我的安装目录C:\Program Files\MySQL\MySQL Server 5.7\bin。…

Anaconda 安装及验证是否安装成功

关于安装&#xff1a; 1、打开准备好的安装包&#xff08;官网下载或者镜像网站下载都可以&#xff09;&#xff0c;点next 2、继续点I Agree 3、点All Users 4、安装位置&#xff0c;默认安装在C盘&#xff0c;点击更改&#xff0c;自定义路径&#xff0c;要确保这个路径下是…

如何将Excel数据转化成树状结构

数据如下图 请问怎么才能将以上数据转换成树状结构 因为数据较多&#xff0c;除去手动分组的方法请问还有什么方法呢&#xff1f;

Excel表格中建立树形结构

Excel表格中建立树形结构 2010-04-05 17:56:37| 分类&#xff1a; 开发笔记 |字号 订阅 有时在excel表格中需要建立树形结构&#xff0c;如下图所示。 对动物、植物进行分类。 动物、植物类中分别有子类&#xff0c;像动物中有鸟、猫、狗等。 每个子类又有自己的子类&#…

excel数据处理,表格数据处理成树形结构

excel数据模版如下&#xff1a;红色部分为一级菜单&#xff0c;绿色部分为二级菜单&#xff0c;绿色部分对应的是三级菜单 现在将数据转化为树形结构 名称&#xff0c;编码&#xff0c;上级编码&#xff0c;这种格式&#xff0c;首先将数据做转化导入到mysql mysql根据逗号将一…

poi java导入树状结构即父子数据的excel

父子结构的excel&#xff08;java&#xff09;导入数据库&#xff0c;页面上展示成树状结构 excel数据结构 java代码 Controller层 我这里传入的参数除了文件&#xff0c;有一个id&#xff0c;id为页面上的目录上的一个节点id,可理解为我导入的目录实在某一个节点下展现&…

Mac如何使用python创建Excel文件,并进行内容写入

python中创建Excel文件&#xff0c;并进行内容写入 引用第三方库 1、进入python环境路径下&#xff0c;使用终端进入该路径&#xff1b; cd XXX #python环境路径如找不到该路径&#xff0c;可以直接复制pycharm中的python环境路径&#xff0c;在finder搜索&#xff0c;会展…

今天用Excel做一颗圣诞树,小伙伴们都惊呆了!

今天是圣诞节&#xff0c;教大家用Excel做一棵圣诞树 具体操作如下&#xff1a; 1、首先把你要用来画圣诞树的列&#xff0c;调整为合适的列宽&#xff1b; 2、然后按住Ctrl&#xff0c;选中树状的单元格区域&#xff1b; 3、再输入RAND()函数&#xff0c;按下CtrlEnter填充…