0
点赞
收藏
分享

微信扫一扫

docker启动mongo时没启动认证,怎么改

问题描述

在启动 Docker 容器中的 MongoDB 时,没有启用认证,导致数据库存在安全风险。需要找到一种方法来解决这个问题。

解决方案

要解决这个问题,我们需要重新启动 Docker 容器,但这次启用认证。下面是一个具体的步骤来实现这个解决方案。

步骤 1:停止当前的容器

首先,我们需要停止当前正在运行的 MongoDB 容器。可以使用以下命令来停止容器:

$ docker stop <container_id>

步骤 2:删除当前的容器

接下来,我们需要删除当前的 MongoDB 容器。可以使用以下命令来删除容器:

$ docker rm <container_id>

步骤 3:创建一个新的 MongoDB 配置文件

为了启用认证,我们需要创建一个新的 MongoDB 配置文件。在该配置文件中,我们将启用认证并设置相关的用户和密码。创建一个名为 mongo-configdb.conf 的文件,并添加以下内容:

security:
  authorization: "enabled"

步骤 4:启动 MongoDB 容器,并挂载配置文件

现在,我们准备启动一个新的 MongoDB 容器,但这次我们将挂载配置文件并启用认证。使用以下命令来启动容器:

$ docker run -d -p 27017:27017 --name mongo-auth \
    -v /path/to/mongo-configdb.conf:/etc/mongo/mongo-configdb.conf \
    mongo --config /etc/mongo/mongo-configdb.conf

确保将 /path/to/mongo-configdb.conf 替换为上一步中创建的配置文件的实际路径。

步骤 5:创建管理员用户

一旦容器启动,我们需要创建一个管理员用户,以便在以后管理数据库。首先,进入容器的 shell 环境:

$ docker exec -it mongo-auth mongo admin

然后,使用以下命令创建管理员用户:

> db.createUser({ user: 'admin', pwd: 'password', roles: ['root'] })

确保将 password 替换为您要设置的实际密码。

步骤 6:测试认证

现在,我们已经启用了认证并创建了管理员用户。我们可以测试认证是否正常工作。首先,尝试连接到 MongoDB 服务器:

$ docker exec -it mongo-auth mongo -u admin -p password --authenticationDatabase admin

如果一切正常,您应该能够成功连接到 MongoDB 服务器。

结论

通过按照上述步骤重新启动 MongoDB 容器并启用认证,我们成功解决了 Docker 启动 MongoDB 时没有启用认证的问题。这样做可以提高数据库的安全性,防止未经授权的访问。请记住,在创建新的容器时,确保挂载正确的配置文件,并为管理员用户设置强密码。

举报

相关推荐

0 条评论