# 在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容器中运行并启用认证,允许远程访问。