🐯
本文将为大家介绍如何在Ubuntu上搭建MongoDB,并提供简洁明了的步骤。
概述: 该文章提供了在Ubuntu操作系统上安装和配置MongoDB的详细步骤。它涵盖了从导入公钥和创建列表文件开始,到安装MongoDB、运行MongoDB服务,以及配置和使用MongoDB的过程。以及如何使用Navicat连接MongoDB数据库的简单指南,完成本文后,你将掌握在Ubuntu上搭建MongoDB的基本知识,并能够使用MongoDB进行数据存储和操作。
阅读指南:
预计阅读时间:估计完整阅读和实施该文章的步骤可能需要15到30分钟。
推荐阅读:
想放一个小项目在服务器上?试试看这篇文章
安装、使用和卸载MongoDB
请按照以下步骤逐步操作,别担心,我是按照官网的走的,如果安装过程中遇到任何问题,请随时留言,我会尽快进行修正。
导入包管理系统使用的公钥
如果你的服务器上尚未安装gnupg
和curl
,请先执行以下命令进行安装:
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
安装mongodb-tools
以下是安装mongodb-tools
的步骤:
第一步:复制链接
前往一下连接,下载想要的tool:www.mongodb.com/try/downloa…
向下滚动,找到 MongoDB Database Tools 下载部分。
根据你选择的MongoDB版本,选择相应的安装包,推荐选择tgz格式。
服务器下载文件
使用以下命令在服务器上下载文件,例如:
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隧道连接
真香啊😘
完成以上步骤后,你就成功连接到了服务器上的MongoDB数据库。
配置安全组
有人问我安全组怎么配置,我简单以阿里云的安全组讲解
在配置安全组之前,你可以使用以下步骤来了解如何获取你的主机IP地址。
别开VPN,打开网站 ip.me/。
在该网站上,你将看到你当前所使用的主机的公网IP地址。
现在,我将简单介绍如何在阿里云上配置安全组
进入阿里云控制台,
找到你的实例,并点击实例名称进入实例详情页面,
在左侧导航栏中,找到并点击 "安全组" 选项。
在安全组列表中,找到你要配置的安全组,并点击 "配置规则" 按钮。
在规则列表中,点击 "添加安全组规则"。
在弹出的对话框中,选择 "自定义TCP" 规则。
填写以下信息:
- 端口范围:输入MongoDB使用的端口号(默认为27017)。
- 授权对象:选择 "0.0.0.0/0",允许来自任何IP地址的访问,这个要设置自己的公网ip
- 授权策略:选择 "允许"。
设置一下:授权对象(白名单),点击一下授权对象合并,好操作
点击 "确认" 完成安全组规则的添加。
现在,你已成功配置了安全组,允许来自自己的主机访问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"}
解决问题:
sudo rm /tmp/mongodb-27017.sock
sudo systemctl restart mongod