gpt4 book ai didi

mongodb - 如何通过 Docker 在 MongoDB 上启用身份验证?

转载 作者:可可西里 更新时间:2023-11-01 09:53:34 24 4
gpt4 key购买 nike

我想为 mongodb:latest 启动一个 docker,但只允许某些用户访问某些数据库(即启用 --auth ).任何其他人都不应访问 mongodb!作为 docker 启动的一部分,我应该如何执行此操作?

顺便说一句,数据目录在启动期间通过使用以下命令位于主机上:-v/my/own/datadir:/data/db

最佳答案

如果你看一下:

您会注意到 docker-entrypoint.sh 中使用了两个变量:

  • MONGO_INITDB_ROOT_USERNAME
  • MONGO_INITDB_ROOT_PASSWORD

您可以使用它们来设置 root 用户。例如,您可以使用以下 docker-compose.yml 文件:

mongo-container:
image: mongo:3.4.2
environment:
# provide your credentials here
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=rootPassXXX
ports:
- "27017:27017"
volumes:
# if you wish to setup additional user accounts specific per DB or with different roles you can use following entry point
- "$PWD/mongo-entrypoint/:/docker-entrypoint-initdb.d/"
# no --auth is needed here as presence of username and password add this option automatically
command: mongod

现在,当通过 docker-compose up 启动容器时,您应该注意到以下条目:

...
I CONTROL [initandlisten] options: { net: { bindIp: "127.0.0.1" }, processManagement: { fork: true }, security: { authorization: "enabled" }, systemLog: { destination: "file", path: "/proc/1/fd/1" } }
...
I ACCESS [conn1] note: no users configured in admin.system.users, allowing localhost access
...
Successfully added user: {
"user" : "root",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}

要添加除 root 之外的自定义用户,请使用入口点可执行脚本(放置在 $PWD/mongo-entrypoint 目录下,因为它在 docker-compose 中安装到入口点):

#!/usr/bin/env bash
echo "Creating mongo users..."
mongo admin --host localhost -u USER_PREVIOUSLY_DEFINED -p PASS_YOU_PREVIOUSLY_DEFINED --eval "db.createUser({user: 'ANOTHER_USER', pwd: 'PASS', roles: [{role: 'readWrite', db: 'xxx'}]}); db.createUser({user: 'admin', pwd: 'PASS', roles: [{role: 'userAdminAnyDatabase', db: 'admin'}]});"
echo "Mongo users created."

将执行入口点脚本并创建其他用户。

关于mongodb - 如何通过 Docker 在 MongoDB 上启用身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54764184/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com