这里以 Ubuntu 系统为例介绍如何安装 MongoDB。这里的操作过程在 18.04 版本上的 Ubuntu 验证通过。

1 安装

1.1 通过 APT 安装

首先需要导入 MongoDB 官方 Repo 的密钥。注意我们这里安装的是 4.4 版本。

1
curl -fsSL https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -

以上命令应该会输出 "OK"。然后我们需要向 apt 的源列表里面添加 MongoDB 的官方 Repo:

1
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list

之后我们就可以安装了:

1
2
$ sudo apt update
$ sudo apt install mongodb-org

1.2 通过 Systemd 运行

安装之后 MongoDB 需要手动开始运行。安装过程中 MongoDB 已经自动配置了一个 systemd 的 Deamon 服务,我们可以通过 systemctl 命令来运行这个服务:

1
$ sudo systemctl start mongod.service

要让 MongoDB 开机自动运行,需要运行:

1
$ sudo systemctl enable mongod

1.3 安装验证

运行一下 mongo 命令来检查安装和运行是否成功吧:

1
$ mongo --eval 'db.runCommand({ connectionStatus: 1 })'

此项命令应该输出类似下面的内容:

1
2
3
4
5
6
7
8
9
10
11
MongoDB shell version v4.4.1
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("2244c4df-38a3-4109-9fd2-68948865647a") }
MongoDB server version: 4.4.1
{
"authInfo" : {
"authenticatedUsers" : [ ],
"authenticatedUserRoles" : [ ]
},
"ok" : 1
}

2 安全性配置

默认情况下 MongoDB 没有创建管理用户,我们可以在 localhost 环境下直接访问数据库内容。这有两点不好:

  1. 本地服务器上的任意用户都可以访问数据库;
  2. 远程访问在这种情况下是被禁止的。

我们需要首先开启 MongoDB 的认证 (Authentication) 功能。

2.1 添加管理用户

进入 MongoDB Console 环境:

1
$ mongo

然后我们进入 MongoDB 默认创建的 admin 数据库。

1
> use admin

然后输入下面的命令以创建一个具有管理员权限的用户。

1
2
3
4
5
6
7
> db.createUser(
... {
... user: "AdminSammy",
... pwd: passwordPrompt(),
... roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
... }
... )

创建成功时你应该能看到类似下面的输出:

1
2
3
4
5
6
7
8
9
10
Successfully added user: {
"user" : "AdminSammy",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
},
"readWriteAnyDatabase"
]
}

2.2 启用认证

MongoDB 的配置文件夹位于 /etc/mongod.conf。使用你习惯的命令行编辑器(vim/nano/emacs)打开这个文件进行编辑。注意需要 sudo 权限才能编辑这个文件。

1
$ sudo vim /etc/mongod.conf

找到被注释的 security 部分:

1
2
3
4
5
6
. . .
#security:

#operationProfiling:

. . .

将其修改为:

1
2
3
4
. . .
security:
authorization: "enabled"
. . .

然后重启 mongod 服务:

1
$ sudo systemctl restart mongod

在启用认证之后的,你就不能直接使用 mongo 命令访问数据库了(mongo 命令仍然会带你进入 Console 环境,但是你没有任何权限查看数据库内容)。这是你需要为 mongo 命令提供用户名参数:

1
$ mongo -u AdminSammy

然后 mongo 会提示你输入密码。密码校验成功之后就可以正常访问数据库了。

3 启用远程访问

首先要确保你的防火墙设置打开了 MongoDB 使用的端口。一般这个端口默认是 27017,你也可以通过下面的命令来查看 MongoDB 使用的端口:

1
$ sudo lsof -i | grep mongo

然后我们来编辑 /etc/mongo.conf 文件。在 net: 配置选项下,修改 bindIp 设置。这里默认是 127.0.0.1。要监听所有接口可以修改成 0.0.0.0

1
2
3
4
5
6
7
. . .
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0

. . .

也可以指定要监听的接口的IP。多个IP使用逗号分隔:

1
2
3
4
5
6
7
. . .
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1,mongodb_server_ip

. . .

然后重启 mongd 服务。

1
$ sudo systemctl restart mongod

4 参考链接