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

2023-12-14 20:04

本文主要是介绍【亲测可用】实在太快了!如何在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的具体使用。

这篇关于【亲测可用】实在太快了!如何在Linux下5分钟快速安装MongoDB的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/493771

相关文章

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

RabbitMQ 延时队列插件安装与使用示例详解(基于 Delayed Message Plugin)

《RabbitMQ延时队列插件安装与使用示例详解(基于DelayedMessagePlugin)》本文详解RabbitMQ通过安装rabbitmq_delayed_message_exchan... 目录 一、什么是 RabbitMQ 延时队列? 二、安装前准备✅ RabbitMQ 环境要求 三、安装延时队

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

Python多线程实现大文件快速下载的代码实现

《Python多线程实现大文件快速下载的代码实现》在互联网时代,文件下载是日常操作之一,尤其是大文件,然而,网络条件不稳定或带宽有限时,下载速度会变得很慢,本文将介绍如何使用Python实现多线程下载... 目录引言一、多线程下载原理二、python实现多线程下载代码说明:三、实战案例四、注意事项五、总结引

C#使用Spire.XLS快速生成多表格Excel文件

《C#使用Spire.XLS快速生成多表格Excel文件》在日常开发中,我们经常需要将业务数据导出为结构清晰的Excel文件,本文将手把手教你使用Spire.XLS这个强大的.NET组件,只需几行C#... 目录一、Spire.XLS核心优势清单1.1 性能碾压:从3秒到0.5秒的质变1.2 批量操作的优雅