安装 MongoDB 遇到的坑

概要:这篇文章说的是在 Linux 上(包括 Ubuntu 和 CentOS)上安装 MongoDB 社区版(Community Edition)遇到的几个坑。

软件包的区别

对于 Ubuntu 来说:先看官方的一个说明片段。【这里

【mongodb】是由 Ubuntu 维护的,不是由 MongoDB 公司维护的软件包,这个软件包和官方的 mongodb-org 冲突。这个软件包大多数情况下当前都不是最新的正式版,要检查非官方的 mongodb 包是否已经安装在你的系统上,使用如下命令:

sudo apt list --installed | grep mongodb

如果已经安装了非官方的软件包并且需要卸载,使用如下命令:

sudo apt remove mongodb
sudo apt purge mongodb

【mongodb-org】是由 MongoDB 公司维护的,并且始终保持为当前数据库的最新正式版。

对于 CentOS 来说:

软件包的区别和 Ubuntu 类似。

名称区别区别

对于官方的 【mongodb-org】 包来说,一系列名称都使用的是【mongod】

对于非官方的【mongodb】包来说,一些列名称都使用的是【mongodb】

管理方式区别

对于非官方源安装的,使用如下命令管理:

sudo systemctl enable mongodb
sudo systemctl disable mongodb
sudo systemctl start mongodb
sudo systemctl restart mongodb
sudo systemctl stop mongodb
sudo systemctl status mongdob

对于官方源安装的,使用如下命令管理:

sudo systemctl enable mongod
sudo systemctl disable mongod
sudo systemctl start mongod
sudo systemctl restart mongod
sudo systemctl stop mongod
sudo systemctl status mongdo

启动方式

无论使用何种方式安装何种源的何种版本,对于非图形界面的 CUI 界面而言启动 mongo-shell 都使用的是 【mongo】这个名称,而非其他!!!而非其他!!!而非其他!!!(重要的话说三遍!!!)(特别重要!!!)

错误提示:Failed to unlink socket file /tmp/mongodb-27017.sock Unknown error

网上的文章别人会告诉你是 root 用户和非 root 用户的区别,让你删除这个文件云云。nope,因为你可能使用了【mongod】打算启动 shell,换个启动名称试试试试【mongo】没准就没了。这个文件,当然也不用删~因为你每次删除,以后更新或者重新启动,它都可能生成这样一个文件(你觉得 MongoDB 没有考虑到这个问题?)

错误提示:Failed to set up listener: SocketException: Address already in use

当你出现了上一个临时文件的错误提示,然后删除了那个临时文件后满怀信心重新启动的时候,又可能蹦出了这个错误。网上告诉你是字面意思,已经启动使用中了,让你去使用 kill 杀掉一下再重新启动云云。nope,因为你可能使用了【mongod】打算启动 shell,换个启动名称试试试试【mongo】没准就没了。

卸载

使用上述管理方式里的方式停止数据库实例

sudo systemctl stop mongod

删除相关软件包

# Ubuntu
sudo apt purge mongodb-org*
# CentOS
sudo yum erase $(rpm -qa | grep mongodb-org)

删除相关目录(注意备份)

# Ubuntu
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb
# CentOS
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongo

留下评论

电子邮件地址不会被公开。 必填项已用*标注