在Docker中安装MongoDB

 docker run -p 27017:27017 -v /data/mongodb:/data/db --name mongodb -d mongo --auth

1.版本选取

访问mongodb的镜像仓库地址:https://hub.docker.com/_/mongo?tab=tags&page=1
 
这里选取最新版本进行安装,如果想安装其他的可用版本,可以使用命令“docker search mongo”来查看
 

2.拉取最新版本镜像

这里执行命令"sudo docker pull mongo:latest" 拉取最新版的mongodb镜像文件
 
等待镜像拉取完成后,通过命令"sudo docker images"查看下拉取的镜像,可以看到,已经成功拉取到了本地
 

3.开始运行

创建一个文件夹,用作mongodb的数据目录挂载
 
运行启动命令“docker run -p 27017:27017 -v /data/mongo:/data/db --name mongodb -d mongo”
在上面的命令中,几个命令参数的详细解释如下:
-p 映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务
-v 为设置容器的挂载目录,这里是将本机的“/data/mongo”目录挂载到容器中的/data/db中,作为 mongodb 的存储目录
--name 为设置该容器的名称
-d 设置容器以守护进程方式运行
 
通过命令“docker ps”查看容器启动运行情况
可以看到mongo容器已经成功运行起来了
 

4.使用客户端工具Studio 3T连接mongo

studiot 3T下载地址:https://studio3t.com/download/
 
 
 

5.创建mongo用户

可以看到一个空的mongo数据库,有一个不太完美的地方在于我们的mongo没有任何账户密码,在裸奔,下面我们执行以下语句,创建一个管理员用户,
1
2
3
4
5
db.createUser({
user: 'admin',
pwd: 'Aa123456',
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}); 
 

6.指定auth重新运行服务

创建完用户我们就要重新启动mongo服务,并且指定auth
删除已经运行的mongo容器:docker rm -f mongodb
指定验证启动mongo容器:docker run -p 27017:27017 -v /data/mongo:/data/db --name mongodb -d mongo --auth
也就是在之前的启动命令后面加上 --auth:需要密码才能访问容器服务
 
此时强行访问,可以看到提示,没有授权
 
这里我们在连接的地方指定一下账户密码
 
再来查询,已经正确查询出来之前添加的用户信息
 
 

7.创建一个业务数据库和对应的读写账户

1
2
3
4
5
6
use demo_db;
db.createUser({
  user: 'dev',
  pwd: 'Aa123456',
  roles: [ { role: "readWrite", db: "demo_db" } ]
  });

 

 
然后用这个dev账号来登录

角色授权

角色授权分两种,一种是直接在当前库中创建用户并授予相关权限。如admin库中创建admin用户。另一种情况是

将在admin中创建的用户授予操作其他库的权限,相关授权命令如下:

授予角色:

db.grantRolesToUser("userName", [ { role:"<role>", db: "<database>"} ]) 
 

取消角色:

db.grantRolesToUser("userName", [ { role:"<role>", db:"<database>"} ]) 
 

下面我们在admin库中执行以下命令:

  1.  
    db.grantRolesToUser("admin", [ { role:"dbOwner", db:"test"} ]) ;
  2.  
    ##admin 指的是用户名 test 指的要授权的数据库
 

在Docker中安装MongoDB的更多相关文章

  1. 在Docker中安装和部署MongoDB集群

    此文已由作者袁欢授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 在Docker中安装mongodb 采用的mongodb镜像:https://registry.hub.doc ...

  2. 在docker中安装mysql

    #!/bin/sh # 安装docker # 在docker中安装mysql # 解决了docker容器中无法输入中文的问题 ##########################安装docker # ...

  3. 在Docker中安装配置Oracle12c并实现数据持久化

    在Docker中安装配置Oracle12c并实现数据持久化 选定镜像,并pull到系统中,一定要先配置加速,不然超级慢 eric@userver:~$ docker pull sath89/oracl ...

  4. 在Docker中安装.NET Core(使用命令行工具)

    在Docker中安装.NET Core目前共有两种方法:1,使用命令行工具安装2,使用VS2017来安装 本文主要介绍使用命令行工具来安装: 1,安装Docker(如果本机已经有Docker环境,可以 ...

  5. docker微服务部署之:四、安装docker、docker中安装mysql和jdk1.8、手动构建镜像、部署项目

    docker微服务部署之:三,搭建Zuul微服务项目 1.Centos7安装Docker 详见:Centos7安装Docker 2.Docker中安装jdk1.8 详见:使用Docker构建jdk1. ...

  6. docker中安装宝塔面板

    我的电脑是win10,安装的virtualbox其上装的ubutun14,ubutun也安装了docker,今天我补充一个完整的操作流程.怎么在docker中安装宝塔面板?先打个岔,这些命令总是记不住 ...

  7. 在Windows操作系统中安装MongoDB

    如何在Windows操作系统中安装MongoDB: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-windows/ 启动Mon ...

  8. docker中安装宝塔面板教程

    本人电脑是win10,安装的virtualbox,装的centos7.2,在centos7.2装了docker,这个比较简单,网上一大堆教程,今天说一下装好了docker之后怎么在docker中安装面 ...

  9. Linux或Docker里安装minio / Docker中安装h5ai

    此文为单节点搭建操作 Linux中搭建minio 对象存储服务器 下载minio安装包 wget https://dl.minio.io/server/minio/release/linux-amd6 ...

随机推荐

  1. 如何把 Caffeine Cache 用得如丝般顺滑?

    一.关于 Caffeine Cache 在推荐服务中,虽然允许少量请求因计算超时等原因返回默认列表.但从运营指标来说,越高的"完算率"意味着越完整的算法效果呈现,也意味着越高的商业 ...

  2. Java JFR 民间指南 - 事件详解 - jdk.ThreadAllocationStatistics

    定时线程分配统计事件:jdk.ThreadAllocationStatistics 引入版本:Java 11 相关 ISSUES: Test jdk/jfr/event/runtime/TestThr ...

  3. Android最新敲诈者病毒分析及解锁(11月版)

    一.样本信息 文件名称:久秒名片赞,(无需积分s)(2)(1)(1).apk 文件大小:1497829字节 文件类型:application/jar 病毒类型:Android.CtLocker 样本包 ...

  4. myysql 不能远程访问的解决办法

    1.通过navicat或者命令行,将user表中原来host=localhost的改为host=% 命令行方式: mysql> update user set host = '%' where ...

  5. java数组 简单了解

    一.关于集合 1.数组,链表和哈希表(散列表)的存储方式 (1)传统的数组结构存储数据会在内存中开辟连续得空间,结合下标从而使得可以快速访问数据,但是删除和添加数据就很浪费资源 (2)链表不需要开辟连 ...

  6. JavaWeb——JDBC

    内容索引 1. JDBC基本概念 2. 快速入门 3. 对JDBC中各个接口和类详解 JDBC: 1. 概念:Java DataBase Connectivity Java 数据库连接, Java语言 ...

  7. Windows进程间通讯(IPC)----管道

    管道的分类 管道其实际就是一段共享内存,只不过Windows规定需要使用I/O的形式类访问这块共享内存,管道可以分为匿名管道和命名管道. 匿名管道就是没有名字的管道,其支持单向传输数据,如果需要双向传 ...

  8. java集合-数组ArrayList

    1.简介 ArrayList是java集合框架常用的集合类之一,底层是基于数组来实现容量大小动态变化的. 2.类图(JDK 1.8) 下图是ArrayList实现的接口和继承的类关系图: public ...

  9. Linux 部署 iSCSI 服务端

    Linux 部署 iSCSI 服务端 服务端实验环境 iSCSI-server :RHEL8 IP:192.168.121.10 一.服务端安装 target 服务和 targetcli 命令行工具 ...

  10. nginx版本无缝升级与回滚

    chookie和session 你们公司的会话保持怎么做的? 1.开发做的:记录用户登陆的状态,将用户登陆状态保存到,redis服务器中,nfs,mysql. ​ 记录用户的登陆状态. ​ 通过登陆用 ...