在Ubuntu中探索MongoDB:从安装到管理的完整指南

2023年 7月 19日 51.4k 0

🐯

本文将为大家介绍如何在Ubuntu上搭建MongoDB,并提供简洁明了的步骤。

概述: 该文章提供了在Ubuntu操作系统上安装和配置MongoDB的详细步骤。它涵盖了从导入公钥和创建列表文件开始,到安装MongoDB、运行MongoDB服务,以及配置和使用MongoDB的过程。以及如何使用Navicat连接MongoDB数据库的简单指南,完成本文后,你将掌握在Ubuntu上搭建MongoDB的基本知识,并能够使用MongoDB进行数据存储和操作。

阅读指南:

  • 准备工作:确保你的服务器已经安装了gnupg和curl,并导入MongoDB的公钥。
  • 创建列表文件:根据你的Ubuntu版本选择合适的列表文件,并重新加载本地包数据库。
  • 安装MongoDB:选择安装最新稳定版或特定版本的MongoDB包,并使用适当的命令进行安装。
  • 运行MongoDB:根据你的init系统选择适当的命令来启动、停止或重启MongoDB服务。
  • 数据库操作:使用mongosh命令进入MongoDB的命令行界面,执行数据库操作,如导入数据等。
  • 卸载MongoDB:如果需要卸载MongoDB,按照指导停止服务,并删除相关软件包和数据目录。
  • 配置安全组:如果你使用云服务商的安全组,可以按照文章中的步骤设置白名单,以确保安全访问MongoDB。
  • 预计阅读时间:估计完整阅读和实施该文章的步骤可能需要15到30分钟。

    推荐阅读:

    想放一个小项目在服务器上?试试看这篇文章

    安装、使用和卸载MongoDB

    请按照以下步骤逐步操作,别担心,我是按照官网的走的,如果安装过程中遇到任何问题,请随时留言,我会尽快进行修正。

    导入包管理系统使用的公钥

    如果你的服务器上尚未安装gnupgcurl,请先执行以下命令进行安装:

    sudo apt-get install gnupg curl
    

    然后导入MongoDB的公钥:

    curl -fsSL https://pgp.mongodb.com/server-6.0.asc | 
       sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg 
       --dearmor
    

    创建MongoDB的软件包列表文件

    根据你的Ubuntu版本选择相应的列表文件。首先,查看你的服务器版本:

    lsb_release -dc
    

    根据输出的信息,选择适合你的Ubuntu版本的列表文件进行创建。

    Ubuntu 22.04 (Jammy)

    echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
    

    Ubuntu 20.04 (Focal)

    echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
    

    Ubuntu 18.04 (Bionic)

    echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
    

    Ubuntu 16.04 (Xenial)

    echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
    

    我的服务器:

    root@xxxxxxxxxxx:~# lsb_release -dc
    
    Description:    Ubuntu 22.04.2 LTS
    Codename:       jammy
    

    以我的服务器为例,它的版本是Ubuntu 22.04.2 LTS,我将会选择第一个列表文件。

    重新加载本地软件包数据库

    使用以下命令重新加载本地软件包数据库:

        sudo apt-get update
    

    安装 MongoDB 软件包

    根据你的需求,有两种安装方式可供选择:

    1、安装最新的稳定版软件包:

    使用以下命令进行安装:

    sudo apt-get install -y mongodb-org
    

    2、安装特定版本的软件包:

    使用以下命令安装6.0.7版本的软件包:

    sudo apt-get install -y mongodb-org=6.0.7 mongodb-org-database=6.0.7 mongodb-org-server=6.0.7 mongodb-org-mongos=6.0.7 mongodb-org-tools=6.0.7
    

    如果使用apt-get命令发现有可用的新版本,它可能会升级你的MongoDB软件包。为了避免意外升级,你可以将软件包固定在当前安装的版本。执行以下命令:

    echo "mongodb-org hold" | sudo dpkg --set-selections
    echo "mongodb-org-database hold" | sudo dpkg --set-selections
    echo "mongodb-org-server hold" | sudo dpkg --set-selections
    echo "mongodb-mongosh hold" | sudo dpkg --set-selections
    echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
    echo "mongodb-org-tools hold" | sudo dpkg --set-selections
    

    无论你选择哪种安装方式,都使用一下这个shell,请确保运行上述命令,避免持续升级带来的潜在问题。

    运行MongoDB

    在运行MongoDB之前,请先检查你的Linux版本,以确定使用的是systemd还是System V init作为init系统。

    最新版本的 Linux 倾向于使用systemd(它使用该systemctl命令),

    而旧版本的 Linux 倾向于使用System V init(它使用该service命令)。

    如果你不确定你的服务器使用哪个系统,使用以下命令来检查:

    ps --no-headers -o comm 1
    
    • systemd- 选择下面的systemd (systemctl) 选项卡。
    • init- 选择下面的System V Init(服务) 选项卡。

    然后按照所选的选项进行MongoDB的启动、停止、重启和查看状态操作。

    基本命令示例

    使用systemctl命令进行操作:

    sudo systemctl start mongod    # 启动MongoDB
    sudo systemctl status mongod   # 查看MongoDB状态
    sudo systemctl stop mongod     # 停止MongoDB
    sudo systemctl restart mongod  # 重启MongoDB
    mongosh                       # 使用MongoDB命令行工具
    

    使用System V Init命令进行操作:

    sudo service mongod start    # 启动MongoDB
    sudo service mongod status   # 查看MongoDB状态
    sudo service mongod stop     # 停止MongoDB
    sudo service mongod restart  # 重启MongoDB
    mongosh                     # 使用MongoDB命令行工具
    

    主机上运行的默认端口 27017

    MongoDB目录

    MongoDB相关目录:

    • 数据目录:/var/lib/mongodb
    • 日志目录:/var/log/mongodb

    你可以使用以下命令来查看MongoDB是否在环境变量中:

    which mongod
    

    如果你不满意默认的目录配置,你可以修改MongoDB的配置文件/etc/mongod.conf,其中包括数据目录和日志目录的位置。下面我将介绍如何连接Navicat到服务器数据库的问题。

    卸载MongoDB

    如果你需要卸载MongoDB,可以按照以下步骤进行操作:

    停止 MongoDB

    运行以下命令停止MongoDB进程:

    sudo service mongod stop
    

    删除包

    删除之前安装的MongoDB软件包:

    sudo apt-get purge mongodb-org*
    

    删除数据目录

    删除MongoDB数据库和日志文件:

    sudo rm -r /var/log/mongodb
    sudo rm -r /var/lib/mongodb
    

    问题解决

    mongosh命令进入mongodb命令行

    发起导入文件操作

    mongoimport --db weChat --collection ids --file /usr/local/mongodata/weChat.ids.json --jsonArray
    

    在使用mongoimport命令导入文件时,会遇到mongoimport命令不存在的问题,

    因为我们没有安装mongodb-tools

    image-20230719145231047.png

    安装mongodb-tools

    以下是安装mongodb-tools的步骤:

    第一步:复制链接

    前往一下连接,下载想要的tool:www.mongodb.com/try/downloa…

    向下滚动,找到 MongoDB Database Tools 下载部分。

    根据你选择的MongoDB版本,选择相应的安装包,推荐选择tgz格式。

    image-20230719145758234.png

    服务器下载文件

    使用以下命令在服务器上下载文件,例如:

    wget https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2204-arm64-100.7.3.tgz
    

    解压文件

    下载的文件一般都在/root/ 文件下面

    找不到,可以使用

    which mongodb-database-tools-ubuntu2204-arm64-100.7.3.tgz
    

    mongodb-database-tools-ubuntu2204-arm64-100.7.3.tgz是文件的下载名称

    使用以下命令解压文件,首先进入下载文件所在的目录:

    cd /path/to/
    

    然后执行解压命令:

    tar -zxvf mongodb-database-tools-*-100.7.3.tgz
    

    设置环境变量

    获取环境变量

    # echo $PATH
    

    查看输出的环境变量路径,例如:

    ...:/usr/local/bin:/usr/bin:...
    

    /usr/bin下面的都是系统预装的可执行程序,会随着系统升级而改变。

    /usr/local/bin目录是用户放置自己的可执行程序的推荐位置,不会被系统升级覆盖同名文件。

    因此,我们将文件复制到/usr/local/bin目录下是没有问题的。

    进入解压后的文件夹,并执行以下命令将文件复制到/usr/local/bin目录下:

    sudo cp * /usr/local/bin/
    

    现在尝试运行mongoimport命令,看是否能够成功。

    sudo mongoimport --db weChat --collection ids --file /usr/local/mongodata/weChat.ids.json --jsonArray
    

    如果仍然无法找到命令,你可以退而求其次,到bin里面😭,将文件复制到/usr/bin目录下:

    sudo cp * /usr/bin/
    

    然后再次运行mongoimport命令。

    成功后,你就可以使用mongoimport命令导入文件了。

    配置mongo.conf

    在连接Navicat之前,请先对mongo.conf进行配置,以下是一份通用的配置示例:

        # mongod.conf
        ​
        # for documentation of all options, see:
        #   https://docs.mongodb.com/manual/reference/configuration-options/
        ​
        # Where and how to store data.
        storage:
          dbPath: /var/lib/mongodb
          journal:
            enabled: true
        ​
        # where to write logging data.
        systemLog:
          destination: file
          logAppend: true
          path: /var/log/mongodb/mongod.log
        ​
        # network interfaces
        net:
          port: 27017
          bindIp: 0.0.0.0
        ​
        # how the process runs
        processManagement:
          timeZoneInfo: /usr/share/zoneinfo
        ​
        #security:
        #  authorization: enabled
        ​
        #operationProfiling:
        ​
        #replication:
        ​
        #sharding:
        ​
        ## Enterprise-Only Options:
        ​
        #auditLog:
        ​
        #snmp:
    

    对接Navicat

    在连接Navicat之前,确保你的服务器的访问白名单配置允许使用27017端口的0.0.0.0全部访问

    测试连接成功结束后,一定要给自己的主机ip配置一个安全组访问白名单,不然你会收到被删库的消息😄😄😄。

    All your data is backed up. You must pay 0.008 BTC to 1Kv1RDK6BGdejeavuTnjNk6zkG9bHj54rD In 48 hours, your data will be publicly disclosed and deleted. (more information: go to https://cutt.ly/rambler1)After paying send mail to us: rambler+1oe0k@onionmail.org and we will provide a link for you to download your data. Your DBCODE is: 1OE0K
    

    安装Navicat并使用SSH隧道连接到MongoDB数据库,其他配置保持默认即可。

    其他不用修改直接去选择使用SHH隧道连接

    image-20230719152955634.png

    真香啊😘

    image-20230719153202427.png

    完成以上步骤后,你就成功连接到了服务器上的MongoDB数据库。

    配置安全组

    有人问我安全组怎么配置,我简单以阿里云的安全组讲解

    在配置安全组之前,你可以使用以下步骤来了解如何获取你的主机IP地址。

    别开VPN,打开网站 ip.me/。

    在该网站上,你将看到你当前所使用的主机的公网IP地址。

    image-20230719160014517.png

    现在,我将简单介绍如何在阿里云上配置安全组

    进入阿里云控制台,

    找到你的实例,并点击实例名称进入实例详情页面,

    在左侧导航栏中,找到并点击 "安全组" 选项。

    在安全组列表中,找到你要配置的安全组,并点击 "配置规则" 按钮。

    image-20230719155426700.png

    在规则列表中,点击 "添加安全组规则"。

    在弹出的对话框中,选择 "自定义TCP" 规则。

    填写以下信息:

    • 端口范围:输入MongoDB使用的端口号(默认为27017)。
    • 授权对象:选择 "0.0.0.0/0",允许来自任何IP地址的访问,这个要设置自己的公网ip
    • 授权策略:选择 "允许"。

    设置一下:授权对象(白名单),点击一下授权对象合并,好操作

    image-20230719155613217.png

    点击 "确认" 完成安全组规则的添加。

    现在,你已成功配置了安全组,允许来自自己的主机访问MongoDB服务。

    开放所有IP地址的访问就可能会带来安全风险,丢数据库别勒索在正常不过了。

    运行报错问题解决

    当mongodb起不来,注意查看log日志文件

    查看MongoDB的日志文件,通常位于 /var/log/mongodb/mongod.log

    错误信息

    问题:

    "msg":"Failed to unlink socket file","attr":{"path":"/tmp/mongodb-27017.sock","error":"Operation not permitted"}

    解决问题:

  • 检查文件和目录权限:确保套接字文件 "/tmp/mongodb-27017.sock" 可以被mongod进程访问。确保该文件的所有者和组与mongod进程的用户匹配,并且具有适当的读写权限。
  • 清理套接字文件:如果套接字文件存在但无法删除,您可以尝试手动删除该文件。使用以下命令删除套接字文件:
  • sudo rm /tmp/mongodb-27017.sock
    
  • 重新启动MongoDB服务
  • sudo systemctl restart mongod
    

    相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论