Docker 内的 Mongo 身份验证

mongodb

1个回答

写回答

胡西丹

2025-06-14 07:35

+ 关注

MongoDB
MongoDB

使用 Docker 内的 Mongo 身份验证

在使用 Docker 运行 MongoDB 时,可以启用身份验证来保护数据库的安全性。MongoDB 提供了内置的身份验证功能,可以使用用户名和密码来访问数据库。本文将介绍如何在 Docker 内的 Mongo 实例中启用身份验证,并提供相关的案例代码。

步骤 1:创建 Docker 容器

首先,我们需要创建一个 Docker 容器来运行 Mongo 实例。可以使用以下命令来创建一个新的容器:

docker run --name mongo-contAIner -p 27017:27017 -d mongo

这将创建一个名为 "mongo-contAIner" 的容器,并将容器的 27017 端口映射到主机的 27017 端口。我们将在这个容器中运行 Mongo 实例。

步骤 2:进入容器

接下来,我们需要进入容器来进行后续的操作。可以使用以下命令进入容器:

docker exec -it mongo-contAIner bash

这将打开一个新的终端窗口,并进入到名为 "mongo-contAIner" 的容器中。

步骤 3:连接到 MongoDB

在容器内部,可以使用以下命令连接到 MongoDB

mongo

这将打开一个 MongoDB 的 shell 终端,可以在其中执行 MongoDB 相关的命令。

步骤 4:创建管理员用户

在启用身份验证之前,我们需要先创建一个管理员用户。可以使用以下命令来创建一个具有管理员权限的用户:

use admin

db.createUser({

user: "admin",

pwd: "admin123",

roles: [{ role: "root", db: "admin" }]

})

这将在 "admin" 数据库中创建一个名为 "admin" 的用户,密码为 "admin123",并赋予该用户 "root" 角色。

步骤 5:启用身份验证

现在,我们可以启用身份验证功能。可以使用以下命令在 Mongo 实例中启用身份验证:

exit

docker stop mongo-contAIner

docker rm mongo-contAIner

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

这将停止并删除之前的容器,并创建一个新的容器,同时在启动时启用身份验证。

步骤 6:使用身份验证登录

现在,我们可以使用管理员用户登录到 Mongo 实例中。可以使用以下命令连接到 MongoDB

docker exec -it mongo-contAIner mongo -u admin -p admin123 --authenticationDatabase admin

这将使用管理员用户名和密码连接到 Mongo 实例,并将认证数据库设置为 "admin"。

步骤 7:创建其他用户

除了管理员用户外,我们还可以创建其他具有不同权限的用户。可以使用以下命令在认证数据库中创建一个新用户:

use admin

db.createUser({

user: "user",

pwd: "password",

roles: [{ role: "readWrite", db: "mydb" }]

})

这将在 "admin" 数据库中创建一个名为 "user" 的用户,密码为 "password",并赋予该用户 "readWrite" 角色。

通过在 Docker 内的 Mongo 实例中启用身份验证,可以提高数据库的安全性。通过创建不同权限的用户,可以控制用户对数据库的访问权限。这样可以确保只有经过授权的用户才能访问和修改数据库的内容。

参考代码:

Javascript

// 创建管理员用户

use admin

db.createUser({

user: "admin",

pwd: "admin123",

roles: [{ role: "root", db: "admin" }]

})

// 启用身份验证

exit

docker stop mongo-contAIner

docker rm mongo-contAIner

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

// 使用身份验证登录

docker exec -it mongo-contAIner mongo -u admin -p admin123 --authenticationDatabase admin

// 创建其他用户

use admin

db.createUser({

user: "user",

pwd: "password",

roles: [{ role: "readWrite", db: "mydb" }]

})

通过以上步骤,我们可以在 Docker 内的 Mongo 实例中启用身份验证,并创建不同权限的用户来保护数据库的安全性。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号