在centos7上使用 docker安装mongodb挂载宿主机以及创建其数据库的用户名和密码(最新版本)

前言

因为博主在使用docker安装mongodb并挂载时,发现在网上搜了好多都是以前版本的mongodb,并且按照他们操作总是在进入mongodb出问题,博主搞了好久终于弄好了,故写下博客,供有需要的的人参考。博主安装和官网有些区别,想看官网快速搭建的------>[Mongodb官网快速指南]<------(https://www.mongodb.com/docs/manual/tutorial/install-mongodb-community-with-docker/ "Mongodb官网快速指南")废话不多说开搞!

一、安装mongodb

1.1查看版本(不想看版本的,这一步可以跳过)

docker search mongo

1.2拉取mongodb镜像

# 默认下载最新版本(也就是latest)
docker pull mongo
# 上面也可以写成
docker pull mongo:latest

##上面代码不行,提示你没权限,你就按照提示这上面代码前sudo(使用的账户是root权限)
sudo docker pull mongo

1.3.查看本地已下载镜像,并查看是否下载mongo镜像

docker image ls -a

1.4.在宿主机上挂载并运行

# 1.4.1首先创建一个要挂载的文件(这里-p后面的文件地址就写你自己想要创建的)
mkdir -p /data/docker_volume/mongo/data

# 1.4.2.然后运行容器并挂载
    ## 需要验证
docker run -p 27017:27017 --name mymongo -v /data/docker_volume/mongo/data:/data/db -d mongo --auth
    ##不需要验证
docker run -p 27017:27017 --name mymongo -v /data/docker_volume/mongo/data:/data/db -d mongo
#  1.4.3.查看是否运行
docker ps -a

在上面的命令中,几个命令参数的详细解释如下:

-p 映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务

-v 为设置容器的挂载目录,这里是将本机的"/data/docker_volume/mongo/data"目录挂载到容器中的/data/db中,作为 mongodb 的存储目录

--name 为设置该容器的名称

-d 设置容器以守护进程方式运行(后台运行)

--auth 需要验证就加,不需要验证,就去掉。默认mongodb是不使用用户认证

1.5.设置mongodb随docker自启动(这一步可加可不加,看你个人)

docker update mymongo --restart=always

注意:这里的mymongo是容器的名字(上面1.4.2哪里运行容器--name后起的名字),不是镜像的名字。

二、创建其数据库的用户名和密码

①如果你不需要设置用户和密码,下面就不用看了,直接可以连接mongo了(这种就像是裸奔不安全)
②如果你在上面 容器运行挂载选择需验证方式(在1.4.2处)

2.2.1 首先 登录mymongo容器,进入admin数据库

docker exec -it mymongo mongosh admin

2.2.2 然后 按照 2.3.4步骤往下走

③其余的就往下看

2.3.1.进入mongo容器

docker exec -it mymongo /bin/bash

注意:这里的mymongo是容器的名字,不是镜像的名字。(忘记容器名字,可使用docker ps -a 查看容器名)

2.3.2.进入mongosh中

# 进入mongo shell
mongosh

注:mongosh 6.0版本之后使用,mongo 6.0版本之前使用,博主就是在这里出问题的,博主安装最新mongodb版本,但是使用的是 mongo 所以一直出现问题:bash: mongo: command not found

2.3.3.进入admin数据库

use admin

2.3.4 创建一个用户,mongodb默认没有用户

# 1.这里创建用户名为root,密码为mongo2023,角色(该用户的权限)为root,数据库为admin(你们按照你们自己的设置)
# 用户名:root,密码:mongo2023,角色:root,数据库:admin

db.createUser({user:'root',pwd:'mongo2023',roles:[{role:'root',db:'admin'}]})


# 2.认证登录db.auth('用户名','密码'),打印1则代表认证通过
db.auth('root','mongo2023')

到这里就完成了创建用户和设置密码,如果要退出 Ctrl+D 或者 exit 退出mongodb

三、客户端连接mongodb

如果刚才的安装是在服务器上,想远程连接mongodb还请先查看服务器端口27017放行(对外开放这个端口)