【亲测可用】实在太快了!如何在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

相关文章

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

Win安装MySQL8全过程

《Win安装MySQL8全过程》:本文主要介绍Win安装MySQL8全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Win安装mysql81、下载MySQL2、解压文件3、新建文件夹data,用于保存数据库数据文件4、在mysql根目录下新建文件my.ini

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

最详细安装 PostgreSQL方法及常见问题解决

《最详细安装PostgreSQL方法及常见问题解决》:本文主要介绍最详细安装PostgreSQL方法及常见问题解决,介绍了在Windows系统上安装PostgreSQL及Linux系统上安装Po... 目录一、在 Windows 系统上安装 PostgreSQL1. 下载 PostgreSQL 安装包2.

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.

Maven如何手动安装依赖到本地仓库

《Maven如何手动安装依赖到本地仓库》:本文主要介绍Maven如何手动安装依赖到本地仓库问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、下载依赖二、安装 JAR 文件到本地仓库三、验证安装四、在项目中使用该依赖1、注意事项2、额外提示总结一、下载依赖登

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大