CentOS 8 手动安装MongoDB

news2024/10/1 12:17:52

文章目录

  • 1. MongoDB概述
  • 2. 安装MongoDB
    • 2.1 在MongoDB官网选择对应版本
    • 2.2 去到MongoDB安装目录,并下载MongoDB安装包
    • 2.3 解压MongoDB安装包
    • 2.4 重命名解压后的MongoDB文件夹名
    • 2.5 创建MongoDB数据库数据存放路径
    • 2.6 创建MongoDB日志文件存放路径
    • 2.7 进入MongoDB文件下面的bin目录创建配置文件
    • 2.8 配置MongoDB环境变量
    • 2.9 启动MongoDB
    • 2.10 进入MongoDB数据库控制台
    • 2.11 CentOS8上为MongoDB创建SELinux策略
    • 2.12 MongoDB中创建管理员用户
    • 2.13 重启MongoDB
  • 扩展阅读

1. MongoDB概述

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

它支持的数据结构非常松散,是类似jsonbson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

MongoDB服务端可运行在LinuxWindows平台,支持32位和64位应用,默认端口为27017
推荐运行在64位平台,因为MongoDB32位模式运行时支持的最大文件尺寸为2GB。

2. 安装MongoDB

2.1 在MongoDB官网选择对应版本

  1. 首先访问MongoDB官网地址:https://www.mongodb.com/try/download/community
  2. 选择对应版本,点击“Copy Link”获取下载地址,如下图:
    在这里插入图片描述

2.2 去到MongoDB安装目录,并下载MongoDB安装包

wget命令后是上一步复制的链接

cd /usr/local/

wget https://fastdl.mongodb.org/linux/mongodb-linux-aarch64-rhel82-5.0.16.tgz

在这里插入图片描述

2.3 解压MongoDB安装包

tar -zxvf mongodb-linux-aarch64-rhel82-5.0.16.tgz 

在这里插入图片描述

2.4 重命名解压后的MongoDB文件夹名

mv mongodb-linux-aarch64-rhel82-5.0.16 mongodb

在这里插入图片描述

2.5 创建MongoDB数据库数据存放路径

mkdir  -p  /usr/local/mongodb/data/

命令解读:
这条命令是在Linux系统中创建一个目录。其中,mkdir是创建目录的命令,-p表示递归创建目录,如果目录不存在则创建,如果已存在则不会报错。/usr/local/mongodb/data/是要创建的目录路径,其中/usr/local/是一般的安装程序默认安装的位置。该命令的作用是在/usr/local/mongodb/目录下创建一个名为data的目录,如果mongodb和local目录不存在,则会自动创建它们。这个目录一般用来存储MongoDB数据库的数据文件。

2.6 创建MongoDB日志文件存放路径

mkdir /usr/local/mongodb/logs/

命令解读:
这个目录一般用来存储MongoDB数据库的日志文件。

问:运行上面命令需不需要加“-p”?

答:如果/usr/local/mongodb/目录不存在,则需要加-p参数,否则会报错。因为-p参数可以递归创建目录,如果目录不存在,则会自动创建它所在的目录,如果存在则不会报错。如果/usr/local/mongodb/目录已经存在,则可以直接使用mkdir /usr/local/mongodb/logs/命令创建logs目录,不需要加-p参数。

在这里插入图片描述

2.7 进入MongoDB文件下面的bin目录创建配置文件

cd /usr/local/mongodb/bin/

vim mongod.conf

输入如下信息,保存退出:

dbpath=/usr/local/mongodb/data
logpath=/usr/local/mongodb/logs/mongodb.log
bind_ip=0.0.0.0
auth=true
port=27017
fork=true
journal=false

2.8 配置MongoDB环境变量

vim /etc/profile

输入如下信息,保存退出:

export MONGODB_HOME=/usr/local/mongodb
export PATH=$PATH:$MONGODB_HOME/bin
source /etc/profile

问:source /etc/profile 这行命令是什么意思?

答:这条命令是在Linux系统中执行/etc/profile文件中的命令,作用是重新加载环境变量。/etc/profile文件是系统级别的环境变量配置文件,它包含了系统级别的环境变量设置和各种系统级别的默认配置。执行source /etc/profile命令可以重新加载这个文件,使修改后的环境变量生效。
具体来说,source /etc/profile命令可以让当前的Shell进程读取并执行/etc/profile文件中的命令,将其中定义的环境变量设置到当前Shell的环境变量中。这样,就可以在当前的Shell中使用这些环境变量了。一般在安装某些软件或修改系统环境变量后,需要执行source /etc/profile命令,以便让修改后的环境变量生效。

2.9 启动MongoDB

系统重启后,需要重新输入下面命令启用MongoDB命令

/usr/local/mongodb/bin/mongod --port 27017 --fork --dbpath=/usr/local/mongodb/data/ --logpath=/usr/local/mongodb/logs/mongodb.log --logappend&

检查端口是否占用:

netstat -lanp | grep "27017"

在这里插入图片描述

2.10 进入MongoDB数据库控制台

./mongo

在这里插入图片描述

注:

mongo  #进入MongoDB控制台

show dbs #查看默认数据库

use admin  #切换到admin数据库

exit #退出MongoDB控制台

2.11 CentOS8上为MongoDB创建SELinux策略

这一部分命令运行截图:
在这里插入图片描述

(1) 如果您已将SELinux配置为强制模式,则必须为MongoDB创建SELinux策略。

检查当前的SELinux模式:

getenforce

(2) 使用checkpolicy命令来验证自定义selinux策略,安装checkpolicy:

dnf -y install checkpolicy

(3) 创建一个定制的selinux策略文件:

vim mongodb_cgroup_memory.te

在文件中添加以下指令:

module mongodb_cgroup_memory 1.0;

require {
    type cgroup_t;
    type mongod_t;
    class dir search;
    class file { getattr open read };
}

#============= mongod_t ==============
allow mongod_t cgroup_t:dir search;
allow mongod_t cgroup_t:file { getattr open read };

(4) 编译并应用此selinux策略:

checkmodule -M -m -o mongodb_cgroup_memory.mod mongodb_cgroup_memory.te

semodule_package -o mongodb_cgroup_memory.pp -m mongodb_cgroup_memory.mod

semodule -i mongodb_cgroup_memory.pp

命令解读:
在这里插入图片描述

2.12 MongoDB中创建管理员用户

默认情况下,MongoDB服务器未启用访问控制,因此任何人都可以访问MongoDB服务器并执行管理操作。
所以我们需要创建一个admin用户并在MongoDB服务器中启用访问控制。
(1) 连接MongoDB shell:

mongo

在这里插入图片描述
(2) 查看数据库:

show dbs

在这里插入图片描述
(3) 连接管理数据库:

> use admin;
switched to db admin
>

(4) 创建管理员用户:

> db.createUser(
   {
     user: "Waldo",
     pwd: "123456",
     roles: [ { role: "userAdminAnyDatabase",db: "admin" } ]
   }
 )

在这里插入图片描述

(5) 列出MongoDB数据库中所有用户:

> show users;

在这里插入图片描述

2.13 重启MongoDB

这里使用的是手动安装的 MongoDB,那么 systemd 将无法管理 mongod 服务。在这种情况下,需要使用 MongoDB 提供的 “mongod” 命令来启动和停止 MongoDB 服务。

  1. 停止 MongoDB 服务
sudo /usr/local/mongodb/bin/mongod --shutdown --dbpath /usr/local/mongodb/data

这将使用指定的 dbpath 停止 MongoDB 服务。请注意,在这个例子中,mongod 可执行文件的路径和 dbpath 的路径是基于您的安装和配置而定。

  1. 确认 MongoDB 服务已经停止
ps -ef | grep mongod

此时输入命令mongo无法进入MongoDB控制台

  1. 再次启动 MongoDB 服务
sudo /usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/data --fork --logpath /usr/local/mongodb/logs/mongodb.log

扩展阅读

  1. MongoDB详解,用心看这篇就够了【重点】

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

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

相关文章

Pixhawk基础—认识Pixhawk

Pixhawk简介 pixhawk是由3DR联合APM小组与PX4小组于2014年推出的飞控PX4的升级版,它同时拥有PX4和APM两套固件和相应的地面站软件。该飞控是目前全世界飞控产品中硬件规格最高的产品。 Pixhawk基础 端口介绍 1、Spektrum DSM receiver(Spektrum DSM信号转换为PWM…

Java基础总结(一)

文章目录前言封装继承多态抽象方法接口内部类static权限修饰符this superprivate关键字final关键字就近原则构造方法号StringBuilderStringJoiner字符串原理总结:1、字符串存储的内存原理2、号比较的是什么?3、字符串拼接的底层原理4、StringBuilder提高…

ASIC-WORLD Verilog(1)一日Verilog

写在前面 在自己准备写一些简单的verilog教程之前,参考了许多资料----asic-world网站的这套verilog教程即是其一。这套教程写得极好,奈何没有中文,在下只好斗胆翻译过来(加了自己的理解)分享给大家。 这是网站原文&…

Java反射面试总结(二)

为什么引入反射概念?反射机制的应用有哪些? 我们来看一下 Oracle 官方文档中对反射的描述: 从 Oracle 官方文档中可以看出,反射主要应用在以下几方面: 反射让开发人员可以通过外部类的全路径名创建对象,…

详解C语言结构体内存对齐:你知道如何快速计算结构体大小吗?

本篇博客会讲解C语言结构体的内存对齐,并且给出一种快速计算结构体大小的方式。主要讲解下面几点: 结构体的内存对齐是什么?如何快速计算结构体的大小?如何利用内存对齐节省结构体占用的内存空间?为什么结构体要内存对…

分布式数据库架构路线大揭秘

文章目录分布式数据库是如何演进的?数据库与分布式中间件有什么区别?如何处理分布式事务,提供外部一致性?如何处理分布式SQL?如何实现分布式一致性?数据库更适合金融政企的未来这些年大家都在谈分布式数据库…

MySQL-中间件mycat(一)

目录 🍁mycat基础概念 🍁Mycat安装部署 🍃初始环境 🍃测试环境 🍃下载安装 🍃修改配置文件 🍃启动mycat 🍃测试连接 🦐博客主页:大虾好吃吗的博客 &#x1f9…

边缘网关thingsboard-gateway DTU902

thingsboard-gateway是一个采用python语言编写的开放源代码网关程序,用于将传统或第三方系统的设备与thingsboard平台连接。 支持 采集Modbus slaves、CAN、MQTT 、OPC-UA servers, Sigfox Backend。 除了具备普通 网关外,还具备可配置的边缘能力&…

rabbitmq深入实践

生产者,交换机,队列,消费者 交换机和队列通过 rounting key 绑定者,rounting key 可以是#.,*.这类topic模式, 生产者发送消息内容 rountingkey, 到达交换机后交换机检查与之绑定的队列, 如果能匹…

Yolov5之common.py文件解读

深度学习训练营原文链接前言0.导入需要的包以及基本配置1.基本组件1.1 autopad1.2 ConvDWConv模块1.3TransformerLayer模块1.4 Bottleneck和BottleneckCSPBottleneck模型结构1.5 CrossConv模块1.6 C3模块基于C3的改进1.7SPP1.8Focus模块1.9 Concat模块1.10 Contract和Expand1.1…

好东西!!!多亏几位大牛整理的面试题,让我成功上岸!!

凡事预则立,不预则废。相信很多程序员朋友在跳槽前都会临阵磨枪,在网络上搜集一些面试题进行准备。 然而,当机会来临时,却发现这些面试题往往“不快也不光”.... 由于Java面试涉及的范围很广,很杂,而且技…

使用MyBatis实现简单查询

文章目录一,创建数据库与表(一)在Navicat里创建MySQL数据库testdb(二)创建用户表 - t_user(三)在用户表里插入3条记录二,案例演示MyBatis基本使用(一)创建Mav…

解决idea每次打开新的项目都需要重新配置maven

原理:就是通过 idea 来进行全局配置【非当前工程配置】 IDEA 版本:2023.1 如何查看版本信息 ? 【主菜单】——【帮助】——【关于】 我在网上查找了许多文章 ,我混淆了一点!当前工程的设置 & 全局设置 不在一个地方…

马斯克掷重金收购英

人前主义,人后生意。在带领一众科技圈大佬签署了呼吁暂停研发比GPT-4更强AI模型的公开信后不久,马斯克却转头豪掷千金收购了10000块英伟达GPU。 一些网友吐槽,以马老板的格局而言,这次价值过亿的投资绝对不是为了借着AI概念火爆来…

2021年 团体程序设计天梯赛——题解集

Hello各位童学大家好!😊😊,茫茫题海你我相遇即是缘分呐,或许日复一日的刷题已经让你感到疲惫甚至厌倦了,但是我们真的真的已经达到了我们自身极限了吗?少一点自我感动,没有结果前别太…

[FREERTOS] 任务的创建、删除、调度与状态

1.什么是任务? 我的理解是:任务像是进程/线程,创建一个任务就会开辟一个空间,每一个任务都是独立的执行相应的动作互不干扰,就比如玩游戏,陪女朋友,任务通常都会有一个while(1)死循环 2.与任务创…

使用cloudflare代理flask启用https服务

原文来自:使用cloudflare代理flask启用https服务 | 夜空中最亮的星 欢迎大家留言讨论 问题1:使用cloudflare的dns回源服务器的时候,出现了http和https不断反复重定向 问题2: flask只能启用http服务,需要启用https 步骤 服务器&…

浅谈[Linux搭建GitLab私有仓库,并内网穿透实现公网访问]

转载自远控源码文章:Linux搭建GitLab私有仓库,并内网穿透实现公网访问 前言 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。 Gitlab是被广泛使用的基于git的开源代码管理平…

报错解决:Python ‘NoneType‘ object is not subscriptable , 获取到的数据为None,需要保留数据

人生苦短,我用python 爬取某DB电影数据的时候, 在获取内容的时候出现 NoneType object is not subscriptablePython 资料报错交流:点击此处跳转文末名片获取 获取数据的部分代码是: writer_avatars (writers_list[wi][avatars][small]) …

Linux0.11 信号(十二)

系列文章目录 Linux 0.11启动过程分析(一) Linux 0.11 fork 函数(二) Linux0.11 缺页处理(三) Linux0.11 根文件系统挂载(四) Linux0.11 文件打开open函数(五&#xff09…