在Docker中安装MongoDB并启用数据库认证

917 阅读1分钟
# 在Docker中安装MongoDB并启用数据库认证

本文将介绍如何在Docker中安装MongoDB并启用数据库认证。

## 1. 拉取MongoDB镜像

首先,从Docker Hub拉取最新的MongoDB镜像:

```bash
docker pull mongo

2. 启动MongoDB容器

接下来,启动MongoDB容器:

docker run --name mongodb -p 27017:27017 -d mongo --auth

3. 进入MongoDB容器

启动容器后,进入MongoDB容器内部:

docker exec -it mongodb bash

4. 创建管理员用户

进入MongoDB Shell并创建管理员用户:

mongosh
use admin
db.createUser({ user: 'mongouser', pwd: 'mongo.user', roles: [{ role: 'userAdminAnyDatabase', db: 'admin' }] })

5. 验证管理员用户

使用刚创建的管理员用户进行身份验证:

db.auth('mongouser', 'mongo.user')

如果验证成功,将返回 { ok: 1 }

6. 创建普通用户

切换到目标数据库并创建普通用户:

use youdb
db.createUser({ user: 'username', pwd: 'passwd', roles: [{ role: 'readWrite', db: 'youdb' }] })

7. 检查普通用户权限

验证普通用户的权限:

db.auth('username', 'passwd')

8. 配置MongoDB以启用认证和远程访问

编辑mongod.conf配置文件以启用远程访问和数据库认证:

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
#  engine:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0 // 开启远程访问 (关键行)

# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo

security:
  authorization: "enabled" // 开启认证 (关键行)

9. 重启MongoDB容器

最后,重启MongoDB容器以使配置生效:

docker restart mongodb

完成以上步骤后,MongoDB将在Docker容器中运行并启用认证,允许远程访问。