说明,我这里使用的是compose的版本的1.17.0格式是3,但是这和compose版本无关,你只需要添加MONGO_INITDB_ROOT_USERNAME和MONGO_INITDB_ROOT_PASSWORD到你的环境变量中即可。

#使用官方mongo:3.2的image,compose文件如下,其中当你加入环境变量MONGO_INITDB_ROOT_USERNAME和MONGO_INITDB_ROOT_PASSWORD(缺一不可)后mongodb自动开启权限验证,这在mongo官方镜像文件的docker-entrypoint.sh脚本中可看到https://github.com/docker-library/mongo/blob/00a8519463e776e797c227681a595986d8f9dbe1/3.0/docker-entrypoint.sh

version: '3'
services:
  mongo:
    image: mongo:3.2
    ports:
      - "27017:27017"
    volumes:
      - mongo-data:/data/db
    networks:
      - backend
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: root.123
volumes:
  mongo-data:
networks:
  backend:

#创建服务,我这里使用的是swarm集群

docker stack  deploy gionee -c=./docker-compose.yml

#进入容器内部,mongo容器id自行查看

docker exec -it 7c10b03dcf3a /bin/bash

#执行mongo命令

mongo

#首先使用命令show dbs查看是否开启鉴权,如果看到

2017-11-29T07:46:27.950+0000 E QUERY    [thread1] Error: listDatabases failed:{

        "ok" : 0,

        "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",

        "code" : 13



说明已经开启鉴权,继续往下走。如果没有看到错误提示,说明mongo没有默认开启鉴权,应该检查你的compose.yml的MONGO_INITDB_ROOT_USERNAME和MONGO_INITDB_ROOT_PASSWORD格式是否正确,yml语法非常严格

#默认是进入test数据库,需要切换到admin数据库

use admin

#添加admin用户

db.createUser( {
 user: "admin",
 pwd: "123456",
 roles: [ {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }, 
        {
            "role" : "readWriteAnyDatabase",
            "db" : "admin"
        }, 
        {
            "role" : "dbAdminAnyDatabase",
            "db" : "admin"
        } ]
});

#登录admin用户

db.auth("admin","123456")

#进入你想要添加用户的数据库,切记要切换你想要操作的数据库,我这里是smartdb

use smartdb

#添加用户,指定权限和数据库readWrite表示读写权限

db.createUser(
     {
       user: "smart",
       pwd: "123456",
       roles: [
          { role: "readWrite", db: "smartdb" }
       ]
     }
 )

#验证用户否可用,如果返回1说明成功

db.auth("smart","123456")

Docker系列教程02-MongoDB默认开启鉴权的更多相关文章

  1. SpringBoot系列教程Web篇之开启GZIP数据压缩

    本篇可以归纳在性能调优篇,虽然内容非常简单,但效果可能出乎预料的好: 分享一个真实案例,我们的服务部署在海外,国内访问时访问服务时,响应有点夸张:某些返回数据比较大的接口,耗时在 600ms+上,然而 ...

  2. Docker系列教程01-Centos7安装新版Docker教程(10步)

    最近一直忙于开发,没有时间好好总结一下docker的知识.其实现在docker的教程已经很多很多了,但是很多系统的教程都是基于Ubuntu系统,因为官方推荐使用Ubuntu系统啊,原因在于Ubuntu ...

  3. Mongodb默认开启与关闭

    默认启动:   $ ./mongodb   默认数据保存路径:/data/db/ 默认端口:27017   修改默认路径:   --dbpath $ ./mongdb --dbpath /mongod ...

  4. Docker系列教程01-使用Docker镜像

    docker系列导读 一文带你读懂什么是docker Docker安装部署 10张图带你深入理解Docker容器和镜像 前言 学习Docker,我们需要掌握它的三大核心概念:镜像.容器和仓库. 今天先 ...

  5. Cobalt Strike系列教程第七章:提权与横向移动

    Cobalt Strike系列教程分享如约而至,新关注的小伙伴可以先回顾一下前面的内容: Cobalt Strike系列教程第一章:简介与安装 Cobalt Strike系列教程第二章:Beacon详 ...

  6. springBoot系列教程02:mongodb的集成及使用

    1.安装mongodb mongdb的安装很简单,只需要下载解压后运行mongod就好了 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86 ...

  7. Docker系列教程03-Docker私有仓库搭建(registry)

    简介 仓库(Repository)是集中存放镜像的地方,又分为公共镜像和私有仓库. 当我们执行docker pull xxx的时候,它实际上是从registry.docker.com这个地址去查找,这 ...

  8. Docker系列教程05 容器常用命令

    https://mp.weixin.qq.com/s?__biz=MzI4ODQ3NjE2OA==&mid=2247483890&idx=1&sn=2721f08624e6de ...

  9. Docker系列教程05-Docker数据卷(Data Volume)学习

    引言 在Docker中,容器的数据读写默认发生在容器的存储层,当容器被删除时其上的数据将会丢失.要想实现数据的持久化,需要将数据从宿主机挂载到容器中.目前Docker提供了三种方式将数据从宿主机挂载到 ...

随机推荐

  1. jdk1.7更新visualvm插件

    所有的插件全部更新到hithub上 https://visualvm.github.io/pluginscenters.html 然后,在根据不同的JDK版本选择不同的插件地址.更改VisualVM插 ...

  2. resume

    源码链接(码云):https://gitee.com/tinqiao/level_17_software_engineering.git 截图效果: 源码: <!DOCTYPE html> ...

  3. java去除查询实体字段多值之间空格

    String str = 需要去除的字段; str.replaceAll(",","");

  4. (六)read读取控制台输入

    1.基本语法 read(选项)(参数) 选项: -p:指定读取值时的提示符: -t:指定读取值时等待的时间(秒). 参数 变量:指定读取值的变量名 2.案例实操 (1)提示7秒内,读取控制台输入的名称 ...

  5. setParameter不支持传统的按位置查询方式

    setParameter不支持传统的按位置查询方式 String hql = "from Customer as c where c.cust_id = ?"; List<C ...

  6. S0.6 直方图均衡化

    S0.6 直方图均衡化 直方图均衡化能提高图像的质量 累积直方图 这是后面均衡化所要知道的先验知识. 如果说直方图统计的是等于像素值的数量,那么累积直方图统计的就是小于等于像素值的数量 均衡化步骤 我 ...

  7. 更换MariaDB数据库

    https://downloads.mariadb.org/mariadb/repositories/#mirror=neusoft&distro=Ubuntu&distro_rele ...

  8. centOS7.3安装配置NFS服务

    在安装和运行NFS服务中,发现了一个需要警惕的地方. 运行2个centOS7.3系统.由于前面一篇已经写了使用xshell进行远程,所以,直接远程进行操作: chen-01做为服务端,chen-02做 ...

  9. vue项目中引入mint-ui的方式(全部引入与按需引入)

    参考哦 https://blog.csdn.net/qq_36742720/article/details/83620584 https://jingyan.baidu.com/article/c1a ...

  10. 数据调试~~TCP转串口、串口转TCP调试

    Android socket开发了一个socket客户端,当输入服务器ip以及端口,建立连接之后,Android可以发送数据到电脑接收服务器端. 如果电脑端没有socket服务器怎么办?方法如下: 1 ...