如何在Arch Linux上安装MongoDB 4.0
Chinaxiong
・4 分钟阅读
前提条件
- 一个运行最新版本的Arch Linux服务器(请参见本文 )
- sudo访问:
- 区分: 作为root运行的命令由#前缀,作为常规用户运行的命令由$前缀,使用root权限运行命令的推荐方法是,常规用户每个命令使用前缀sudo。
安装MongoDB 4.0数据库
MongoDB在AUR (Arch用户存储库),
- 从源代码编译,使用AUR软件包
mongodb
和mongodb-tools
" 注意这大约需要180GB空间,这是一个很长的编译过程,使用4核心CPU,大约需要7小时,这是推荐的方法,因为它使用Arch 的编译标志。 - 使用预先构建的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/
根据数据库的大小和使用的索引,此进程可能要几秒到几小时不等。