简介

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 用户密码连接

Compass用户密码连接

Mongodb 内置角色介绍

角色
数据库用户角色 read、readWrite
数据库管理角色 dbAdmin、dbOwner、userAdmin;
集群管理角色 clusterAdmin、clusterManager、clusterMonitor、hostManager
备份恢复角色 backup、restore
所有数据库角色 readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色 root

以上,我们实现了私有化部署 Mongodb,支持用户密码登录,感谢查阅。

推荐文章

如何申请一个永久免费的 Mongodb 数据库 - 详细版

腾讯云轻量服务器开放端口方法教程

阿里云服务器开放端口教程