使用Docker部署Mongodb实现私有化部署
简介
MongoDB是一个文档数据库,它类似于JSON对象,我们可以使用MongoDB存储我们的博客数据,比如用户评论,友链文章信息等等,虽然我们前面提到可以申请一个永久免费的Mongodb数据库,但由于是免费的,速度总会比私有部署的慢得多,所以本次教程使用私有化部署Mongodb。
安装Docker
1 | yum install -y docker |
运行Mongodb
1 | docker run -itd --restart=always -p 9126:27017 -v /www/data/mongodb/data:/data/db --name mongodb mongo |
| 参数 | 解释 |
|---|---|
| -itd | -i以交互式运行容器,-t分配一个伪输入终端,-d后台运行 |
| –restart=always | 重启docker时自动启动容器 |
| -p | 指定端口,格式为 主机(宿主)端口:容器端口 |
| -v | 目录挂载到其他盘,格式主机(宿主)目录:容器目录 |
| –name | 重命名容器名字 |
mongo表示启动名字为mongo的镜像,如果本地没有,则尝试拉取hub.docker.com的镜像
由于安装的mongodb默认无验证登录,所以为了防止在互联网上裸奔,我们需要添加用户密码
创建数据库用户
1 | docker exec -it mongodb mongo admin |
1 | db.createUser({ user: 'admin', pwd: '123456', roles: [ { role: "root", db: "admin" } ] }); |
我试了一下报错:rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:290: starting container process caused "exec: \"mongo\": executable file not found in $PATH",查资料得知是bash没有找到,换种命令:
1 | docker exec -it /bin/sh mongodb mongo admin |
报错:/bin/sh: 0: Can't open mongo,换种思路:
使用官方软件连接

打开终端创建用户

1 | db.createUser({ user: 'admin', pwd: '123456', roles: [ { role: "root", db: "admin" } ] }); |
停止刚刚的mongodb
1 | docker rm -f mongodb |
重新启动,--auth表示需要验证登录
1 | docker run -itd --restart=always -p 9126:27017 -v /www/data/mongodb/data:/data/db --name mongodb mongo --auth |
Compass用户密码连接

Mongodb内置角色介绍
| 角色 | 值 |
|---|---|
| 数据库用户角色 | read、readWrite |
| 数据库管理角色 | dbAdmin、dbOwner、userAdmin; |
| 集群管理角色 | clusterAdmin、clusterManager、clusterMonitor、hostManager |
| 备份恢复角色 | backup、restore |
| 所有数据库角色 | readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase |
| 超级用户角色 | root |
以上,我们实现了私有化部署Mongodb,支持用户密码登录,感谢查阅。
推荐文章
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 枫叶!
评论








