简介

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

Compass用户密码连接

Mongodb内置角色介绍

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

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

推荐文章

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

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

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