我正在使用官方的mongodb:2.6 docker镜像。 我想弄清楚如何使用user:password模式启用直接authentication。
我如何指定mongo必须在身份validation下运行?
我如何创build每个user:password ?
MongoDB手册包含启用authentication和将用户添加到数据库的教程。
假设您正在运行一个名为mongo的独立映像,您可以通过使用docker命令行启动映像来启用身份validation,如下所示:
docker run --name mongod -d mongo --auth
其他启用和configuration访问控制的步骤并不特定于Docker。 使用--auth参数启动mongod ,您需要创build一个pipe理员用户,然后需要任何其他用户。
为了其他安全考虑,也值得回顾一下MongoDB 安全清单 。
注意:MongoDB 2.6在2016年10月份达到了使用寿命 。我强烈build议升级到支持的版本(例如最新的3.2.x或3.4.x)以获得持续的支持。
在您的服务器上运行mongo docker实例
docker run -d -p 27017:27017 -v ~/dataMongo:/data/db mongo
在运行的docker实例上打开bash。
docker ps
容器IDIMAGE命令创build状态端口名称
b07599e429fb mongo“docker-entrypoint …”35分钟前向上35分钟0.0.0.0:27017->27017/tcp musing_stallman
docker exec -it b07599e429fb bash root@b07599e429fb:/#
inputmongo进入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