在实际开发过程中,有些数据可能不适合存储在关系型数据库中,而是更适合存储在 NoSQL 数据库中。MongoDB 是 NoSQL 数据库中的一种,它以分布式文件存储方式存储数据,支持海量数据存储。
然而,在 MongoDB 中,由于默认情况下,外网可以随意访问数据库,这就存在信息泄漏等风险。因此,为了保证数据安全,需要对 MongoDB 数据库进行操作,如禁止外网访问,并添加一些必要的账户。
一、禁止外网访问数据库
1. 修改 MongoDB 配置文件
首先,我们需要找到 MongoDB 的配置文件,在该文件中进行修改,限制数据库只能本地访问。如下图所示,以 Windows 系统为例,进入 MongoDB 安装目录下,找到 mongod.cfg 配置文件:
![mongod配置文件](https://img-blog.csdn.net/20181020142012802?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FuZHJleWZlc3Nf/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
双击该文件,打开配置文件并进行修改,将 `bindIp` 选项的值改为 `0.0.0.0`,如下所示:
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0
这里的 `bindIp` 参数是指绑定的 IP 地址,将其改为 0.0.0.0 表示任何 IP 地址都可以访问该数据库。如果只想允许本机访问,可以将其改为 127.0.0.1。
2. 重启 MongoDB 服务
修改配置文件后,需要重启 MongoDB 服务才能生效。方法如下:
① 首先,按下 `Win + R` 快捷键,打开运行窗口,输入 `cmd` 命令并执行,打开命令行窗口:
![运行CMD](https://img-blog.csdn.net/20181020143634818?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FuZHJleWZlc3Nf/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
② 在命令行窗口中,输入 `net stop MongoDB` 命令并执行,停止 MongoDB 服务:
![停止MongoDB服务](https://img-blog.csdn.net/20181020143714371?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FuZHJleWZlc3Nf/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
③ 输入 `net start MongoDB` 命令并执行,启动 MongoDB 服务:
![启动MongoDB服务](https://img-blog.csdn.net/20181020143809532?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FuZHJleWZlc3Nf/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
当出现下面的提示信息时,说明 MongoDB 服务已经成功启动:
![MongoDB服务启动成功](https://img-blog.csdn.net/20181020143857381?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FuZHJleWZlc3Nf/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
二、添加用户
在禁止外网访问数据库的前提下,接下来需要添加一些必要的账户,以进一步保证数据库的安全性。
1. 连接 MongoDB 数据库
首先,使用命令行工具连接到 MongoDB 数据库。方法如下:
① 打开命令行窗口,输入 `mongo` 命令并执行,进入 MongoDB 数据库的命令行客户端:
![连接MongoDB数据库](https://img-blog.csdn.net/20181020145329576?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FuZHJleWZlc3Nf/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
② 如果 MongoDB 需要身份验证,需要输入用户名和密码以登录:
![MongoDB身份验证](https://img-blog.csdn.net/20181020145503735?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FuZHJleWZlc3Nf/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
2. 创建管理员用户
接下来,我们需要创建一个管理员用户,用于管理数据库。
① 在 MongoDB 的命令行客户端中,输入以下命令,创建管理员用户并设置密码(这里,用户名为 `admin`,密码为 `admin123`,可以根据需要进行更改):
use admin
db.createUser({user: "admin",pwd: "admin123",roles: [{role: "root",db: "admin"}]})
② 执行上述命令后,命令行客户端会显示创建用户的结果,可以查看用户列表:
![MongoDB创建用户](https://img-blog.csdn.net/20181020150538279?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FuZHJleWZlc3Nf/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
3. 创建普通用户
接下来,我们需要创建一个普通用户,用于普通操作。
① 在 MongoDB 的命令行客户端中,输入以下命令,创建普通用户并设置密码(这里,用户名为 `test`,密码为 `test123`,可以根据需要进行更改):
use admin
db.createUser({user: "test",pwd: "test123",roles: [{role: "readWrite",db: "test"}]})
② 执行上述命令后,命令行客户端会显示创建用户的结果,可以查看用户列表:
![MongoDB创建普通用户](https://img-blog.csdn.net/20181020151944199?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FuZHJleWZlc3Nf/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
到此为止,我们成功地禁止了 MongoDB 的外网访问,并添加了一个管理员用户和一个普通用户,以为 MongoDB 数据库的安全提供了保证。