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

?

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

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


阅读指南:

  1. 准备工作:确保你的服务器已经安装了gnupg和curl,并导入MongoDB的公钥。
  2. 创建列表文件:根据你的Ubuntu版本选择合适的列表文件,并重新加载本地包数据库。
  3. 安装MongoDB:选择安装最新稳定版或特定版本的MongoDB包,并使用适当的命令进行安装。
  4. 运行MongoDB:根据你的init系统选择适当的命令来启动、停止或重启MongoDB服务。
  5. 数据库操作:使用mongosh命令进入MongoDB的命令行界面,执行数据库操作,如导入数据等。
  6. 卸载MongoDB:如果需要卸载MongoDB,按照指导停止服务,并删除相关软件包和数据目录。
  7. 配置安全组:如果你使用云服务商的安全组,可以按照文章中的步骤设置白名单,以确保安全访问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”}

解决问题:

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

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYCf6Hmr' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片