我正在使用官方的 mongodb:2.6 docker 镜像。我正在尝试弄清楚如何使用user:password
模式启用直接身份验证。
如何指定 mongo 必须在身份验证下运行?
我该如何创建每一个user:password
?
答案1
MongoDB 手册包含以下教程启用身份验证和将用户添加到数据库。
假设您正在运行一个名为的独立图像,您可以通过使用类似下面的命令mongo
行启动图像来传递参数以启用身份验证:docker
docker run --name mongod -d mongo --auth
启用和配置访问控制的其余步骤并不特定于 Docker。mongod
使用--auth
参数启动后,您需要创建一个管理员用户,然后创建所需的任何其他用户。
MongoDB 也值得一看安全检查表出于其他安全考虑。
注意:MongoDB 2.6 已达到生命尽头2016 年 10 月。我强烈建议升级到受支持的版本(例如最新的 3.2.x 或 3.4.x)以获得继续支持。
答案2
在你的服务器上运行 mongo docker 实例
docker run -d -p 27017:27017 -v ~/dataMongo:/data/db mongo
在正在运行的 docker 实例上打开 bash。
docker ps
容器 IDIMAGE 命令创建状态端口名称
b07599e429fb mongo “docker-entrypoint...” 35 分钟前 启动 35 分钟 0.0.0.0:27017->27017/tcp musing_stallman
docker exec -it b07599e429fb bash root@b07599e429fb:/#
通过输入 mongo 进入 mongo shell。
root@b07599e429fb:/# mongo
在这个例子中,我将设置一个名为 ian 的用户,并授予该用户对 cool_db 数据库的读写访问权限。
> use cool_db > db.createUser({ user: 'ian', pwd: 'secretPassword', roles: [{ role: 'readWrite', db:'cool_db'}] })
退出 mongod shell 和 bash。
现在运行启用了 auth 的 mongo docker。
docker run -d -p 27017:27017 -v ~/dataMongo:/data/db mongo mongod --auth
我能够使用以下命令从本地 Windows 笔记本电脑连接到在 Google Cloud 服务器上运行的实例。
mongo <ip>:27017/cool_db -u ian -p secretPassword
您可以提交容器实例的映像。这将存储对其文件系统(包括 /data/db 目录)所做的所有更改。您可以在 docker-engine 运行的任何地方运行此映像。
docker commit mongodb mongodb-backup
参考:https://blog.madisonhub.org/setting-up-a-mongodb-server-with-auth-on-docker/
该答案基于我在 stackoverflow 上的回答:https://stackoverflow.com/a/46645243/3877642