数据库-MongoDB | Linux下 MongoDB的docker-compose的安装及初始化

2,850 阅读3分钟

Linux下 MongoDB的docker-compose的安装及初始化

前言,大名顶顶的非关系型数据库MongoDB,是将数据存储为一个文档,其以key-value(键值对)形式的数据结构,非常类似于JSON数据,它的文档字段值可以包含其他文档,数组及文档数组。

包含如下内容

  1. Docker-compose 来安装配置MongoDB
  2. mongodb的初始化,以及用户创建

Docker-compose 来安装配置MongoDB

MongoDB的键值对的数据结构对于从未接触过数据库知识的前端开发者来说,再友好不过了,接下来,让我们进入它的学习吧,工欲善其事必先利其器,先来安装一个吧!

安装环境

  • 操作系统:UOS家庭版20,是国内厂商统信基于Linux的debian 10.6 buster开发的可视化操作系统,UI挺好看的

  • docker版本:18.09.1

  • docker-compose版本:1.29.2

MongoDB的docker-compose.yml文件

此处使用docker-compose来安装mongodb 可以避免各种环境配置问题,使用docker-compose之前需要一个yml配置文件,让我们来看看吧。

version: '3.1'

services: 
  mongo: #服务的名字
    image: mongo #对应的docker镜像的名字,可指定版本,如mongo:1.0,不指定则为最新版
    container_name: cmongo1 #docker容器的名字
    restart: always #当docker重启时,容器自动启动。
    environment: #容器内部默认的设置
      MONGO_INITDB_ROOT_USERNAME: root #mongo默认的账号
      MONGO_INITDB_ROOT_PASSWORD: root #mongo默认的密码
    ports: #容器运行的端口号和对应的容器内部的端口号
      - 27001:27017 
    volumes:  # 数据持久化
      - ./database:/data/db
    command: [--auth] # 指定需要认证,mongdb默认是无认证的
  

小提示:yml的语法要求及其严格,注意每个:号后面都要跟一个空格,也不要使用tab来进行缩进

安装步骤

1.打开终端,创建相应文件夹和文件

进入home文件夹

cd  /home

image.png

创建MongoDB文件夹,并进入

sudo mkdir MongoDB
cd MongoDB

image.png

2.创建编辑并插入docker-compose.yml文件

使用vi编辑器创建并打开docker-compose.yml文件

sudo vi docker-compose.yml

image.png

按i键进入编辑状态,并将上述mongoDB的docker-compose.yml的内容插入,然后按esc,再按:wq 退出编辑并保存,退出vi编辑器,进入终端

image.png

image.png

3.使用docker-compose启动容器,并在后台运行

sudo docker-compose up -d

image.png

至此,mongdb容器启动成功

查看docker容器的运行情况,可以看到我们刚刚运行的容器

image.png

mongodb的初始化,以及用户创建

用户鉴权

由于在docker-compose.yml文件中开启了用户鉴权,以及创建了默认用户root,需进行用户鉴权 首先要进入MongoDB容器内部,连上MongoDB

sudo docker exec -it cmongo1 mongo admin

image.png

切换到admin数据库

use admin

image.png

进行用户鉴权,返回1,则表示鉴权成功

auth('root','root')

image.png

创建 testdbc 数据库,并切换到testdbc数据库

use testdbc

创建testdbc数据库的一般用户,具备读写权限

image.png

db.createUser({user:'juejin',pwd:'123456',roles:[{role:'readWrite',db:'testdbc'}]})

image.png

使用数据库GUI;连接软件进行测试,本次使用navicat

image.png

image.png

image.png

如图所示,数据库已连接

image.png