• Docker安装Mongodb时报:bash: mongo: command not found错误
  • 发布于 2个月前
  • 382 热度
    0 评论
  • 乌龙山
  • 0 粉丝 32 篇博客
  •   
前言
因为博主在使用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
# 堆代码 duidaima.com
##上面代码不行,提示你没权限,你就按照提示这上面代码前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放行(对外开放这个端口)

用户评论