使用 Docker 部署 Mongodb 实现私有化部署
简介
MongoDB 是一个文档数据库,它类似于 JSON 对象,我们可以使用 MongoDB 存储我们的博客数据,比如用户评论,友链文章信息等等,虽然我们前面提到可以申请一个永久免费的 Mongodb 数据库,但由于是免费的,速度总会比私有部署的慢得多,所以本次教程使用私有化部署 Mongodb。
安装 Docker
shell
1 | yum install -y docker |
运行 Mongodb
shell
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 默认无验证登录,所以为了防止在互联网上裸奔,我们需要添加用户密码
创建数据库用户
bash
1 | docker exec -it mongodb mongo admin |
shell
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 没有找到,换种命令:
shell
1 | docker exec -it /bin/sh mongodb mongo admin |
报错:/bin/sh: 0: Can't open mongo
,换种思路:
使用官方软件连接
打开终端创建用户
shell
1 | db.createUser({ user: 'admin', pwd: '123456', roles: [ { role: "root", db: "admin" } ] }); |
停止刚刚的 mongodb
shell
1 | docker rm -f mongodb |
重新启动,--auth
表示需要验证登录
shell
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 许可协议。转载请注明来自 枫叶!