• Docker版MongoDB的安装


    一. 什么是MongoDB

    MongoDB是现在主流的分布式文档数据库。一些字段不固定的数据,使用传统数据库就不太好处理,要么要建很多表互相关联,要么要建很多冗余字段。而MongoDB简直就是为此而生的。

    MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

     
    典型的MongoDB数据

    二. 为什么用docker版的MongoDB

    你可以在MongoDB的官方文档里找到常规的安装方式。本文主要面向懵懂的初学者,一切简单为主。这里给大家介绍下最简单的安装方式,直接使用官方提供的docker镜像。

    三. 准备工作

    要使用docker镜像,首先你得先安装docker。对docker不熟悉的朋友可以参考我之前写的一篇docker安装和简单使用的教程。

    四. 寻找官方镜像

    要找docker镜像,最常规的方式是直接到Docker Hub上来找。访问Docker Hub的网站,在左上角的搜索框里输入mongo并敲下回车。

     
    Docker Hub网站

    在搜索结果中,就可以看到官方的镜像。注意,有official标志的才是官方镜像,这里不建议新手使用其他第三方提供的镜像,本文后续的讲解也是基于官方镜像。

     
    找到官方镜像

    点击搜索结果官方镜像右边的DETAILS,进入镜像详细介绍页面。在右边你可以找到下载镜像的命令docker pull mongo

     
    镜像详细页

    五. 开始安装

    找到了官方镜像后,我们就可以开始安装了。进入安装好了docker的linux服务器,这里我们以之前教程介绍的阿里云centos7.3环境为例。

    输入命令,下载mongo官方镜像到服务器上。

    docker pull mongo
    
     
    下载镜像

    耐心等待下载完成,输入命令查看下载完成的镜像

    docker images
    
     
    镜像下载完成

    镜像下载完成,下面就要开始启动容器了。启动容器前,建议大家仔细阅读前面寻找镜像时Docker Hub上关于mongo镜像的详细说明
    在镜像文档里,我们知道了该镜像映射的端口号是27017,配置文件的位置在/data/configdb,数据库文件的位置在/data/db
    我们输入如下命令来启动容器。

    docker run -d -p 27017:27017 -v mongo_configdb:/data/configdb -v mongo_db:/data/db --name mongo docker.io/mongo
    

    命令执行完后,输入命令docker ps -a来查看所有的容器,可以看到mongo已经成功启动。

     
    查看启动好的容器

    现在我们使用Robo工具来尝试连接,在Address填上服务器的IP地址,端口号不用改,就用默认的27017。可以看到连接成功。

     
    使用工具连接

    六. 开启身份认证

    Docker版本的mongo默认不需要身份认证。刚才数据库虽然启动成功了,但是任何人知道ip地址端口号都可以登录进来。显然这样是不安全的。那如何打开身份认证功能呢。
    Docker Hub上mongo镜像的官方文档里,我们可以找到答案,需要在启动容器时加上--auth命令。

    现在我们关闭并删除掉刚才的容器,重新使用身份认证模式启动一个容器。

    docker stop mongo
    docker rm mongo
    docker run -d -p 27017:27017 -v mongo_configdb:/data/configdb -v mongo_db:/data/db --name mongo docker.io/mongo --auth
    
     
    身份认证模式启动

    此时再通过Robo连接数据库,发现连接失败。因为我们开启了身份认证模式,但还没有创建用户设置密码。

     
    连接mongo

    输入命令进入容器内部的mongo命令行

    docker exec -it mongo mongo admin
    

    在mongo命令行输入命令创建管理员账户

    db.createUser({ user: 'jsmith', pwd: 'some-initial-password', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
    
     
    创建管理员账户

    创建好账户之后,我们再尝试使用Robo工具来连接,在Authentication栏目填写上刚才创建的用户名密码,即可连接成功。

     
    连接mongo

    七. 创建数据库并设置用户

    目前为止我们一直都是在操作mongo自带的admin库。正常情况下是不建议直接使用这个库的。我们需要自己创建数据库并设置新库的用户。

    还是先使用docker exec -it mongo mongo admin命令进入mongo的命令行页面。
    使用上一步骤创建的管理员账户进行授权

    db.auth("jsmith","some-initial-password");
    

    切换到test库(如不存在会自动创建)

    use test
    

    创建test库下的用户

    db.createUser({ user: 'test', pwd: '123456', roles: [{ role: "readWrite", db: "test" }] });
    
     
    image.png

    创建数据库并设置用户完成,现在再尝试使用Robo工具来连接下看看。
    将Database和用户名密码改为我们刚才设置的,点击Test显示成功。

     
    测试mongo

    保存后直接使用工具进入数据库,可以看见test库。

     
    连接mongo



  • 相关阅读:
    [NOIP2010]关押罪犯
    图的联通入门题
    【luogu4777】扩展中国剩余定理(EXCRT)[数论 扩展中国剩余定理]
    【luogu3868】【TJOI2009】猜数字[模板] [数论 中国剩余定理]
    【luogu1082】【noip2012】同余方程 [数论 扩展欧几里德]
    【luogu1962】斐波那契数列 [矩阵乘法]
    【uva1644】 素数间隔 Prime Gap [数学 质数筛]
    【uva307】小木棍 Sticks [dfs搜索]
    【luogu4011】孤岛营救问题(拯救大兵瑞恩) [最短路][分层思想]
    【noip2015】
  • 原文地址:https://www.cnblogs.com/haixiaozh/p/13437786.html
Copyright © 2020-2023  润新知