如何在Arch Linux上安装MongoDB 4.0
先决条件
- 运行最新Arch Linux的服务器
- 须藤访问:
- 要求以root用户身份运行的命令以前缀
#
,而可以以普通用户身份运行的命令以前缀$
。建议以root用户身份运行命令的方法是,以普通用户的身份为每个命令添加前缀sudo
。
- 要求以root用户身份运行的命令以前缀
安装MongoDB 4.0数据库
MongoDB位于AUR(Arch用户存储库)中。您可以使用2套软件包。请参阅在Arch Linux(包括AUR)上构建软件包以编译和安装这两组软件包:
- 从源编译。使用AUR软件包
mongodb
,也可以使用mongodb-tools
'。请注意,这大约需要180GB,这是一个很长的编译时间。使用4核,大约需要7个小时。这是推荐的方法,因为它使用Arch的编译标志。 - 使用MongoDB的预构建二进制文件。使用AUR软件包
mongodb-bin
,可能的话mongodb-tools-bin
。这将跳过整个编译阶段,从mongodb.org下载预构建的二进制文件,并将其与必要的配置文件打包在一起。
安装软件包后,启动MongoDB,并使其在每次启动后启动。在第一次启动期间,它将为日志和其他数据预分配文件,这可能需要一段时间才能完成数据库的建立:
# systemctl enable --now mongodb
测试连接
连接到MongoDB:
$ mongo
退出:
> exit
防火墙注意事项
尽管配置防火墙始终是一个好主意,但默认情况下,MongoDB默认仅侦听27017
localhost 上的端口,因此它将不接收外部流量。
需要认证
默认情况下,MongoDB允许任何人无需任何身份验证即可连接到它,这显然存在安全风险。
创建一个根数据库用户:
$ 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的一部分,因此pacman
当您升级整个Arch系统时,它将不会自动编译并将其升级到新版本。您将需要手动重新编译新版本并安装新软件包。在这样做之前,请务必先查看MongoDB的发行说明,以了解是否需要采取任何其他步骤。同样,在升级之前备份数据库也是个好主意。
不正常的关机
如果MongoDB没有彻底关闭,并且在下次启动时没有使用其日志自动恢复,则可能需要运行以下命令:
sudo -u mongodb mongod --repair --dbpath /var/lib/mongodb/
根据数据库的大小和所使用的索引,此过程的范围可能从几秒钟到几小时不等。
您还感兴趣的文章
- Linux 查看磁盘空间
- Centos7 hostnamectl 设置主机名
- 在Debian 8上安装4.19.x内核
- 在 CentOS 8 上安装和配置Redis
- 在Ubuntu 16.04上备份,还原或传输MySQL / MariaDB数据库
- chattr 解决项目.user.ini权限删除不掉
- 在Linux系统上快速创建大文件
- 在CentOS 6上使用WonderShaper限制流量
- [ Linux VPS ] Debian/Ubuntu/CentOS 网络安装/网络重装/纯净安装 一键脚本
- Linux查看端口占用情况,并强制释放占用的端口
- 在Arch Linux上使用Makepkg
- 在Arch Linux上构建软件包(包括AUR)