• Linux-安装MongoDB(详细教程)



    前言

    MongoDB 是一个基于分布式文件存储的数据库,主要用于为 web 应用提供可扩展的高性能数据存储解决方案。

    以下内容是如何在 Linux 下搭建单机版 MongoDB 的教程,主要参照 MongoDB - 学习教程

    如果想要在 Windows 下安装 MongoDB ,详见 MongoDB的安装(详细教程)


    一、概述

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

    MongoDB 的设计目标是高性能、可扩展、易部署、易使用,存储数据非常方便。所以它比传统的关系数据库,例如 MySQL,更加适合去应对一些 “三高” 需求:比如对数据库高并发的读写需求、对海量数据的高效率存储和访问需求以及对数据库的高可扩展和高可用性的需求。

    由此可见 MongoDB 的特点如下:

    • 高性能
    • 高可用
    • 高扩展
    • 丰富的查询支持
    • 动态模式和灵活的文档模型

    应用常见上通常见到的是存储用户信息、聊天信息、游戏数据、订单信息等等。之前我们就有使用 MongoDB 存储一些优惠劵的信息,性能上也是非常不错的。


    二、下载

    官网:www.mongodb.com

    在这里插入图片描述

    选择 Products > Community Edition 就能进入社区版

    在这里插入图片描述

    在这里下载 Linux 版对应的安装包

    在这里插入图片描述

    在这里插入图片描述

    ----------------------------------------------------
    在这里直接下载可能会比较慢,以下我提供了已经下载好的安装包:
    网址:百度网盘
    提取码:aahe
    ----------------------------------------------------


    三、安装与启动

    连上 Linux 服务器(这里的服务器我用的是云服务器),我先创建一个 mongodb 的文件夹来存放安装包。

    # 在 /soft 目录下创建一个空的文件夹 mongodb
    mkdir /soft/mongodb
    # 进入这个新建的文件夹下
    cd /soft/mongodb
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    然后上传之前下载好的 Linux 下 MongoDB 的安装包,使用 rz 命令上次文件(有些终端工具是可以直接上传文件的,比如 FinalShell)

    在这里插入图片描述
    在这里插入图片描述
    在该目录下再创建一个文件夹,并且将安装包解压到该文件夹中

    # 在当前目录下(mysql)下创建一个 mongodb-5.0.11 文件夹
    mkdir mongodb-5.0.11
    # 解压安装包到该目录下
    tar -xvf mongodb-linux-x86_64-rhel70-5.0.11.tgz -C mongodb-5.0.11
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    解压完成之后可以切换到 mongodb-5.0.11 目录下查看解压后的文件

    # 进入 mongodb-5.0.11 文件夹
    cd mongodb-5.0.11
    # 进入 mongodb-linux-x86_64-rhel70-5.0.11 文件夹
    cd mongodb-linux-x86_64-rhel70-5.0.11
    # 查看目录下的文件
    ll
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述
    可以看到和 windows 下解压之后的文件是差不多的,bin 目录下存放的是 MongoDB 的一些命令。

    创建与 bin 目录同级的 data\dblogconf 目录用于存放数据和日志

    # 创建 data\db 文件夹存放数据
    mkdir -p data/db
    # 创建 log 文件夹存放日志
    mkdir log
    # 创建 conf 文件夹存放配置文件
    mkdir conf
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述
    log 目录下创建 mongodb.log 存放日志,在 conf 目录下创建 mongodb.conf 文件并添加以下配置信息:

    # 进入 log 目录
    cd log
    # 创建 mongodb.log 文件
    touch mongodb.log
    # 在 conf 目录下创建 mongodb.conf 文件并编辑
    vi ../conf/mongodb.conf
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    在这里插入图片描述

    配置文件:

    systemLog:
      # MongoDB发送所有日志输出的目标指定为文件
      # The path of the log file to which mongod or mongos should send all diagnostic logging information
      destination: file
      # mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径
      path: "/soft/mongodb/mongodb-5.0.11/mongodb-linux-x86_64-rhel70-5.0.11/log/mongod.log"
      # 当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾。
      logAppend: true
    storage:
      # mongod实例存储其数据的目录。storage.dbPath设置仅适用于mongod。
      # The directory where the mongod instance stores its data.Default Value is "/data/db".
      dbPath: "/soft/mongodb/mongodb-5.0.11/mongodb-linux-x86_64-rhel70-5.0.11/data/db"
      journal:
        #启用或禁用持久性日志以确保数据文件保持有效和可恢复。
        enabled: true
    processManagement:
      #启用在后台运行mongos或mongod进程的守护进程模式。
      fork: true
    net:
      # 服务实例绑定的IP,默认是localhost(10.0.4.12:局域网IP)
      bindIp: localhost,10.0.4.12
      # bindIp
      #绑定的端口,默认是27017
      port: 27017
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    进入到 bin 目录下 启动 MongoDB

    # 以配置文件的形式启动
    mongod -f ../conf/mongodb.conf
    
    • 1
    • 2

    在这里插入图片描述

    如果在输入上述命令之后提示:-bash: mongod: command not found,但是 bin 目录下又有 mongod 的可执行文件,可查看文章末尾 可能会遇到的问题

    在这里插入图片描述

    看到 successfully 就表示启动成功了,forked process:19886 表示该服务启动的进程号是:19886,可通过 ps -ef | grep 19886 或者 ps -ef | grep mongod 才看 MongoDB 的运行情况。

    在这里插入图片描述

    停止关闭服务:

    方式一:正常流程关闭:

    # 客户端登录服务,注意,这里通过localhost登录,如果需要远程登录,必须先登录认证才行。
    mongo --port 27017
    # 关闭服务
    db.shutdownServer()
    
    • 1
    • 2
    • 3
    • 4

    方式二:快速关闭:

    #通过进程编号关闭节点
    kill -2 19886
    
    • 1
    • 2

    四、连接

    登录客户端服务,输入 mongo 命令便可以连接上

    mongo
    
    • 1

    在这里插入图片描述

    但是通常我们是通过图型化工具,远程进行连接。

    一些连接数据库的图形化工具也能够连接 MongoDB,比如 Navicat,Compass 图形化界面客户端是能在 MongoDB 官网上找到的。

    在这里插入图片描述

    在这里插入图片描述


    五、可能会遇到的问题

    (1)-bash: mongod: 命令未找到

    如果在输入 mongodb 相关的命令之后提示:-bash: mongod: command not found,但是 bin 目录下又有的可执行文件

    在这里插入图片描述

    原因是没有将可执行文件 添加至 path ,输入以下命令:

    export PATH=/soft/mongodb/mongodb-5.0.11/mongodb-linux-x86_64-rhel70-5.0.11/bin:$PATH
    
    • 1

    在这里插入图片描述

    重新启动下 MongoDB

    在这里插入图片描述

    (2)数据损坏重修复

    如果一旦是因为数据损坏,则需要进行如下操作(了解):

    删除lock文件:

    # mongodb-data-db-directory 表示 数据存放路径
    # 比如:/soft/mongodb/mongodb-5.0.11/mongodb-linux-x86_64-rhel70-5.0.11/data/db
    rm -f <mongodb-data-db-directory>/*.lock
    
    • 1
    • 2
    • 3

    修复数据:

    # mongodb-data-db-directory 表示 数据存放路径
    # 比如:/soft/mongodb/mongodb-5.0.11/mongodb-linux-x86_64-rhel70-5.0.11/data/db
    mongod --repair --dbpath=<mongodb-data-db-directory>
    
    • 1
    • 2
    • 3

    (3)远程连接时出错

    在这里插入图片描述

    这个错误提示出现的可能有很多,我就列举几个我能想到的吧

    • 首先去检查你的 MongoDB 是否关掉了,如果关了的话重启再连接
    • 服务器上面的防火墙是否是开着的状态,或者 27017 的端口是否对外开放
    • 如果你的服务器是云服务器的话,需要去云服务器上面开放 27017 的端口

    第一种情况我就不赘述了,如果你的 MongoDB 是安装在虚拟机上面的话,简单粗暴的方式是直接关闭防火墙

    # 关闭防火墙
    systemctl stop firewalld.service 
    # 查看防火墙的状态
    firewall-cmd --state 
    # 禁止firewall开机启动
    systemctl disable firewalld.service
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    或者为了安全,只开放特定的端口号,MongoDB 默认端口是 27017

    # 关闭防火墙
    systemctl stop firewalld.service 
    # 27017 端口对外开放
    firewall-cmd --remove-port=27017/tcp --permanent 
    # 重启防火墙
    firewall-cmd --reload
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    但是,如果你 MongoDB 并不是安装在虚拟机上的,而是放到云服务器上面,那你必须还得在云服务上面开放这几个端口

    比方说我的 MongoDB 是运行在 某某云 上面的,我就得做如下设置:

    找到我的服务器,点击 更多,选择 管理

    在这里插入图片描述
    进入下一个页面之后,选择 防火墙

    在这里插入图片描述

    添加 27017 端口对外开放

    在这里插入图片描述

    测试连接

    在这里插入图片描述

  • 相关阅读:
    BUUCTF 基础破解 1
    深入解析HashMap
    conda创建python虚拟环境
    Hexo最新实战:(一)Hexo7.0+GitHub Pages博客搭建
    分布式搜索引擎
    线程纵横:C++并发编程的深度解析与实践
    在linux下预览markdown的方法,转换成html和pdf
    机器学习强基计划4-4:详解半朴素贝叶斯分类AODE原理(附Python实现)
    mysql高级SQL 语句
    《算法系列》之滑动窗口
  • 原文地址:https://blog.csdn.net/xhmico/article/details/126568988