如何在Arch Linux上安装MongoDB 4.0

・4 分钟阅读

前提条件

  • 一个运行最新版本的Arch Linux服务器(请参见本文 )
  • sudo访问:
    • 区分: 作为root运行的命令由#前缀,作为常规用户运行的命令由$前缀,使用root权限运行命令的推荐方法是,常规用户每个命令使用前缀sudo。

安装MongoDB 4.0数据库

MongoDB在AUR (Arch用户存储库),

  1. 从源代码编译,使用AUR软件包mongodbmongodb-tools" 注意这大约需要180GB空间,这是一个很长的编译过程,使用4核心CPU,大约需要7小时,这是推荐的方法,因为它使用Arch 的编译标志。
  2. 使用预先构建的MongoDB二进制文件,使用AUR包mongodb-bin和可能的mongodb-tools-bin ,这会跳过整个编译阶段,从mongodb.org,and下载预先构建的二进制文件,只使用必要的配置文件,

安装软件包后,启动MongoDB,并在每次引导后启动它。在第一次启动期间,它为日志和其他数据分配文件,这可能需要一段时间才能完成数据库:


# systemctl enable --now mongodb

测试连接

连接到MongoDB :

 
$ mongo

 

要退出:

 
> exit

 

防火墙

默认配置防火墙是个好主意,默认情况下,MongoDB只监听本地主机上的端口27017,因此它不会接收外部通信。

需要身份验证

默认情况下,MongoDB允许任何人在没有任何身份验证的情况下连接到它,这显然是一个安全风险。

创建root数据库用户:


$ mongo
> use admin
> db.createUser(
... {
... user:"root",
... pwd:"YOUR-NEW-PASSWORD",
... roles: [ { role:"userAdminAnyDatabase", db:"admin" },"readWriteAnyDatabase" ]
... }
... )
> exit

编辑/etc/mongodb.conf,如果使用软件包mongodb添加:


security:
 authorization:"enabled"

如果使用软件包mongodb-bin添加:

 
auth =true

 

重新启动MongoDB :


# systemctl restart mongodb

现在,尽管你仍然可以在没有认证的情况下连接到MongoDB,但是,它将不会执行任何操作:


$ mongodb
> db.getUsers()
... Error: command usersInfo requires authentication :

以root方式连接到MongoDB :


$ mongodb -u root

或者,连接到MongoDB,然后进行身份验证:


$ mongodb
> use admin
> db.auth("root","<YOUR-DATABASE-ROOT-PASSWORD>")

重要:升级

因为MongoDB现在是AUR的一部分,所以,当你升级整个Arch系统时,pacman不会自动编译并将它升级到新版本。你需要手动编译新版本并安装新包,在这之前,一定要查看MongoDB的发行说明,看看是否需要采取任何额外的步骤。在升级之前备份数据库也是一个好主意。

不干净关机

如果MongoDB没有正常关闭,并且在下次引导时不能使用日志自动恢复,则可能需要运行以下操作:


sudo -u mongodb mongod --repair --dbpath /var/lib/mongodb/

根据数据库的大小和使用的索引,此进程可能要几秒到几小时不等。

Chinaxiong profile image