【亲测可用】实在太快了!如何在Linux下5分钟快速安装MongoDB

简介

MongoDB 是一款介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

包体说明

MongoDB官方源中包含以下几个依赖包:

  • mongodb-org: MongoDB元数据包,安装时自动安装下面四个组件包:
  • mongodb-org-server: 包含MongoDB守护进程和相关的配置和初始化脚本。
  • mongodb-org-mongos: 包含mongos的守护进程。
  • mongodb-org-shell: 包含mongo shell。
  • mongodb-org-tools: 包含MongoDB的工具: mongoimport, bsondump, mongodump, mongoexport, mongofiles, mongooplog, mongoperf, mongorestore, mongostat, and mongotop。

安装步骤

操作系统:CentOS Linux release 7.9,访问MongoDB官网,选择适合自己操作系统的版本进行下载,我们选择7.0.4的最新版本。

配置yum源

vim /etc/yum.repos.d/mongodb-org-7.0.repo

[mongodb-org-7.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/7.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-7.0.asc

安装

我们看下yum库里有哪些版本

yum --showduplicates list mongodb-org | expand
Repository epel is listed more than once in the configuration
Installed Packages
mongodb-org.x86_64                 7.0.4-1.el7                  @mongodb-org-7.0
Available Packages
mongodb-org.x86_64                 7.0.0-1.el7                  mongodb-org-7.0 
mongodb-org.x86_64                 7.0.1-1.el7                  mongodb-org-7.0 
mongodb-org.x86_64                 7.0.2-1.el7                  mongodb-org-7.0 
mongodb-org.x86_64                 7.0.3-1.el7                  mongodb-org-7.0 
mongodb-org.x86_64                 7.0.4-1.el7                  mongodb-org-7.0 
yum -y install mongodb-org

会安装7的最新的所有相关的包

操作

启动 mongodb :

systemctl start mongod.service

停止 mongodb :

systemctl stop mongod.service

重启 mongodb :

systemctl restart mongod.service

设置开机启动

systemctl enable mongod.service

查询 mongodb的状态:

systemctl status mongod.service
● mongod.service - MongoDB Database ServerLoaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)Active: active (running) since Thu 2023-12-14 12:13:08 CST; 2h 29min agoDocs: https://docs.mongodb.org/manualMain PID: 21463 (mongod)CGroup: /system.slice/mongod.service└─21463 /usr/bin/mongod -f /etc/mongod.confDec 14 12:13:08 VM-4-8-centos systemd[1]: Started MongoDB Database Server.

这里,我们第一次启动后关闭,然后又重启后,会遇到启动不成功:
Q1:

Dec 14 15:21:39 VM-4-8-centos systemd[1]: Started MongoDB Database Server.
Dec 14 15:21:39 VM-4-8-centos mongod[15099]: {"t":{"$date":"2023-12-14T07:21:39.087Z"},"s":"I",  "c":"CONTROL",  "id":7484500, "ctx":"main","msg":"Environment variable MONGODB_CONFIG_OVERRIDE_NOFORK == 1, overriding ...fork\" to false"}
Hint: Some lines were ellipsized, use -l to show in full.

vim /usr/lib/systemd/system/mongod.service
把以下这行给注释了

#Environment="MONGODB_CONFIG_OVERRIDE_NOFORK=1"

保存后,执行

systemctl daemon-reload

然后重启,这个问题就解决了!

Q2:

Dec 14 11:21:10 VM-4-8-centos systemd[1]: mongod.service: main process exited, code=exited, status=14/n/a

这一一般是发生了执行权限的问题:

chown -R mongodb:mongodb /var/lib/mongodb // 这行看情况,我这里是默认就是mongodb 的权限的,所以不用执行
chown mongodb:mongodb /tmp/mongodb-27017.sock    //这根据你开启的端口数字各有不同
service mongod restart

搞定!

查看版本

mongod --version
db version v7.0.4
Build Info: {"version": "7.0.4","gitVersion": "38f3e37057a43d2e9f41a39142681a76062d582e","openSSLVersion": "OpenSSL 1.0.1e-fips 11 Feb 2013","modules": [],"allocator": "tcmalloc","environment": {"distmod": "rhel70","distarch": "x86_64","target_arch": "x86_64"}
}

说明安装OK,启动成功

终端连接

用终端工具连上去,输入

mongo
-bash: mongo: command not found

原来,从6起,mongo 指令已经无效,换成 mongosh

mongosh
Current Mongosh Log ID: 657aa6af3494a28e5eb77ec9
Connecting to:          mongodb://<credentials>@10.0.4.8:28018/admin?directConnection=true&appName=mongosh+2.1.1
Using MongoDB:          7.0.4
Using Mongosh:          2.1.1For mongosh info see: https://docs.mongodb.com/mongodb-shell/------
The server generated these startup warnings when booting
Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem
Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
vm.max_map_count is too low
------
Deprecation warnings:- Using mongosh on the current operating system is deprecated, and support may be removed in a future release.
See https://www.mongodb.com/docs/mongodb-shell/install/#supported-operating-systems for documentation on supported platforms.

以上,我们要重点关注着三句话,

1.Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. (强烈建议使用带WiredTiger存储引擎的XFS文件系统)

报这个错是因为我的虚拟环境使用的是EXT4文件系统,官方不建议,但不影响使用,所以暂时不处理
在Linux上运行MongoDB时,官方建议使用Linux内核版本2.6.36或更高版本,使用XFS或EXT4文件系统。 如果可能,最好使用XFS,因为它通常与MongoDB表现更好。
使用WiredTiger存储引擎,强烈建议使用XFS,以避免在使用EXT4与WiredTiger时可能发生的性能问题。
使用MMAPv1存储引擎,MongoDB在使用它们之前预先分配其数据库文件,并经常创建大文件。 因此,官方建议使用XFS或EXT4文件系统。 如果可能,请使用XFS,因为它通常与MongoDB表现更好。

2.vm.max_map_count is too low

vm.max_map_count是一个与内核虚拟内存子系统相关的参数,用于控制进程可以拥有的内存映射区域的最大数量。它通常用于限制一个进程可以打开的文件数量,特别是在使用大量内存映射文件的情况下。在Linux系统上,vm.max_map_count参数的默认值通常是较小的数值,例如65530。然而,对于一些需要大量内存映射的应用程序(MongoDB,Elasticsearch)或者特定的使用场景,可能需要增加该参数的值,以便支持更多的内存映射区域。

查看当前的max_map_count 值:

sysctl -a|grep vm.max_map_count
vm.max_map_count = 65530

修改该值:
vi /etc/sysctl.conf,在文件的末尾添加下面一行并保存

vm.max_map_count=262144

然后可以通过运行以下命令重新加载配置文件:

 sysctl -p

2.Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
报这个错是因为MongoDB需要有一个安全库来开启数据库访问控制
在MongoDB部署上启用访问控制会强制执行身份验证,要求用户识别自己。当访问启用了访问控制的MongoDB部署时,用户只能执行由其角色确定的操作。
就是没开启认证的意思, 这很容易导致被黑客入侵。

安全设置

设置账户

进入 mongosh
创建一个超级用户,拥有所有数据库的所有权限:

db.createUser({user:"root",pwd:"K@************",roles: ['root']})

修改密码:

db.updateUser("root",{pwd:"K@************"});
//role 代表可以进行的操作,这里是读写,db是指针对哪个数据库,这里创建的这个用户对于testDB拥有读写权限创建用户 
db.createUser({user:'test',pwd:'test',roles:[{role:'readWrite',db:'testDB'}]})
//这是创建一个超级用户,拥有所有数据库的所有权限
db.createUser({user: 'root', pwd: '123456', roles: ['root']})
//更新用户
db.updateUser(用户名,{user:'test',pwd:'admin',roles:[{role:'read',db:'testDB'}]})
//删除用户
db.dropUser('test')

修改 MongoDB 配置文件:
打开 MongoDB 配置文件 /etc/mongod.conf,找到以下行:

security:authorization: enabled

将 authorization 改为 enabled,表示启用 MongoDB 认证功能。

保存,重启mongoDB,生效。

修改端口和IP绑定

打开 MongoDB 配置文件 /etc/mongod.conf,找到以下行:

net:
port: 27017
bindIp: 127.0.0.1  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.

修改成:

net:
port: 28018
bindIp: 0.0.0.0

保存,重启mongoDB,生效。
终端访问:

mongosh mongodb://10.0.4.8:28018/admin  -u root -p ************

退出

quit

显示已有的数据库

show dbs

终端工具推荐用IDEA自带的Database 或者 DataGrip

总结

本文主要介绍了mongoDB的下载,安装部署,配置,和初级使用,下一篇我们将带来mongoDB的具体使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/221460.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何参与开源项目

大家好&#xff0c;受卡哥邀请&#xff0c;和大家分享一下开源活动的相关经验。首先简要自我介绍一下&#xff0c;我目前在一所985研二在读&#xff0c;主要学习大数据方向&#xff0c;从去年开始参与开源活动近一年时间&#xff0c;也对多个Apache框架有所贡献。 由于学校或专…

2023最新Java获取微博cookie,可用于爬取文章(扫码登录)

目录 文章最下面含有完整main类代码&#xff0c;和完整控制层代码 一、发送请求获取图片和qrid 二、发送请求确认二维码已被正确扫描 三、携带拿到的alt&#xff0c;发送登录请求&#xff0c;获取cookie 四、main类完整方法代码 五、控制层接口完整代码 文章最下面含有完整…

IP与子网掩码之间的关系

子网掩码用于确认IP所在的网段&#xff0c;网络位与子网掩码相匹配 如果有另一台主机想要与这个IP地址进行通信&#xff0c;这时需要看两台主机的IP地址是否处于同一网段&#xff0c;处于同一网段才能相互ping通。 那么怎么判断是否处于同一网段呢&#xff1f;我们就看子网掩…

提升团队效率,防止员工飞单私单的秘诀!

在如今竞争激烈的商业环境中&#xff0c;每个企业都追求更高的销售业绩和客户满意度。然而&#xff0c;有些员工可能会利用V信等社交工具进行私下交易&#xff0c;导致公司的利益损失和客户信任的瓦解。所以&#xff0c;如何防止员工飞单私单成为了一个需要解决的问题。 在这里…

解决POI导入内部错误方式

目录 1、错误报文&#xff1a; 2、解决方案 参考 3、本人采用的是在配置文件中忽略该报错&#xff0c; 1、错误报文&#xff1a; WARN o.a.poi.openxml4j.opc.ZipPackage - Entry _rels/ is not valid, so this part wont be add to the package. org.apache.poi.openxml4…

FL Studio20官方版怎么下载安装?2024最新版图文详细教程

水果音乐制作软件FL Studio2024是一款功能强大的软件音乐制作环境或数字音频工作站&#xff08;DAW&#xff09;&#xff0c;本文主要针对FL Studio 2024怎么安装&#xff1f;来为大家带来了水果软件FL Studio 2024安装图文详细教程&#xff01;水果音乐制作软件FL Studio2024版…

智能分析/可视化安防监控系统EasyCVR风光互补远程视频监控方案

一、背景需求 在一些偏远地区&#xff0c;也具有视频监控的需求。但是这类场景中&#xff0c;一般无法就近获取市电&#xff0c;如果要长距离拉取市电&#xff0c;建设的成本非常高且长距离传输有安全隐患&#xff0c;因此风光互补远程视频监控方案的需求也较多。利用风光电转…

在 JMeter 中使用 JSON 提取器提取特定条件下的值

当你需要在 JMeter 中对接收到的 JSON 响应进行处理时&#xff0c;JSON 提取器是一个非常有用的工具。在本文中&#xff0c;我们将讨论如何使用 JSON 提取器来提取特定条件下的值&#xff0c;以满足你的需求。 问题描述 假设你收到了以下 JSON 格式的响应结果&#xff1a; {…

selenium 执行js后拿不到返回值的原因

1.js代码报错&#xff0c;可以把代码放到浏览器控制台中执行查看具体报错信息&#xff1b; 2.如果js中使用了ajax调用&#xff0c;最后return出去请求的结果值&#xff0c;记得把参数async设置为false;async默认设置为true&#xff0c;如果你的返回结果在请求的后面程序不会等待…

TCP/IP 四层体系结构

目录 ​编辑 导言&#xff1a; 应用层 1. HTTP&#xff08;超文本传输协议&#xff09; 2. FTP&#xff08;文件传输协议&#xff09; 3. SMTP&#xff08;简单邮件传输协议&#xff09; 4. POP3&#xff08;邮局协议第3版&#xff09; 5. IMAP&#xff08;互联网消息访…

Spit Problem

题目名字 Spit Problem 题目链接 题意 输入n个数字&#xff0c;表示a[i]和b&#xff0c;每个a[i]对应一个b&#xff0c;当a[j]a[i]b且a[j]ba[i];则输出yes没有就no 思路 1.遍历输出n个二维数组 2. 如题意所示写出条件 算法一&#xff1a; 实现步骤 如果有的话输出yes之后直接…

Python安装报错: This environment is externally managed

error: externally-managed-environment This environment is externally managed ╰─> To install Python packages system-wide, try apt installpython3-xyz, where xyz is the package you are trying toinstall.这个错误信息表示当前Python环境是由系统外部管理的&…

System 2 Attention:可以提高不同LLM问题的推理能力

推理正在成为大型语言模型(llm)关注的下一个主要领域。尽管llm拥有先进的能力&#xff0c;但大多数llm经常被简单的错误绊倒&#xff0c;显示出他们在推理方面的局限性。这些模型可能会被上下文中的不相关细节所误导&#xff0c;或者受到输入提示中的偏差的影响。而后一种倾向被…

【Apollo】编译 Apollo 源码

https://github.com/ApolloAuto/apollo/blob/master/docs/01_Installation%20Instructions/apollo_build_and_test_explained.md 查看apollo.sh 的用法 ./apollo.sh --help可以编译整个模块&#xff0c;也可以单独编译某一个子模块./modules 为简单起见&#xff0c;Apollo 6.0…

JAVA:注册表窗口的实现

目录 题目要求&#xff1a; 思路大意&#xff1a; 窗体的实现&#xff1a; 窗口A&#xff1a; 窗口B&#xff1a; 窗体之间的构思&#xff1a; 关键代码的实现&#xff1a; 窗口A&#xff1a; 封装列表&#xff1a; 窗口B&#xff1a; 题目要求&#xff1a; 使用…

网站使用CDN后无法获取用户真实IP的解决方法

宝塔或Nginx环境 如果你使用的宝塔或Nginx&#xff0c;可以在宝塔面板或Nginx中&#xff0c;找到配置文件增加如下代码后&#xff0c;重载配置或者重启 Nginx 即可&#xff1a; #CDN获取真实ip set_real_ip_from 0.0.0.0/0; real_ip_header X-Forwarded-For; PHP语言函数方法…

19 高速列车场景下3Gpp 5G NR的DMRS设计与评估

文章目录 解决问题设计DMRS仿真参数仿真结果 解决问题 多普勒/扩展影响十分显著&#xff0c;设计用于信道估计时&#xff0c;需要考虑解调参考信号&#xff0c;5G用DMRS结构而不是CRS结构&#xff0c;因此需要为高速UE设计DMRS结构&#xff0c;DMRS设计是为了提高信道估计并减…

vu3 控制台报错:[Vue warn]: Unhandled error during execution of component

每次按提交的报错信息&#xff1a; runtime-core.esm-bundler.js:41 [Vue warn]: Unhandled error during execution of component event handler at <ElButton onClickfn<login> class"button" type"primary" ... > 代码&#xff1a; cons…

使用Python进行数学四则运算

当我们讨论到Python中的计算问题时&#xff0c;我们必然涉及到加法运算符&#xff08;&#xff09;、减法运算符&#xff08;-&#xff09;、乘法运算符&#xff08;*&#xff09;以及除法运算符&#xff08;/&#xff09;这四大常见的算术运算。下面&#xff0c;我将为您展示如…

【AI底层逻辑】——数学与机器学习:优雅的智慧之舞

目录 “宝藏网站” 聊聊数学 “华尔兹” “智慧之舞” 后续的章节我们将迎来新的篇章&#xff0c;新的切入点探索AI的奥秘&#xff0c;通过揭示高数、矩阵、概率论等数学知识与机器学习的关系来深入理解AI的奥秘&#xff01; “宝藏网站” 开头先给大家上几个宝藏网站&am…