前言

在上一篇文章中带领带同学们快速入门MongoDB这个文档型的NoSQL数据库,让大家快速的了解了MongoDB的基本概念。这一章开始我们就开始实战篇教程,为了快速把MongoDB使用起来我将会把MongoDB在Docker容器中安装起来作为开发环境使用。然后我这边MongoDB的可视化工具用的是Navicate。废话不多说,我们先花了几分钟开始的把MongoDB环境搭建起来。

MongoDB从入门到实战的相关教程

MongoDB从入门到实战之MongoDB简介

MongoDB从入门到实战之MongoDB快速入门

MongoDB从入门到实战之Docker快速安装MongoDB

MongoDB从入门到实战之MongoDB工作常用操作命令

MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(1)-后端项目框架搭建

MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(2)-系统数据集合设计

MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(3)-MongoDB连接和基本操作封装

MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(4)-Blazor快速入门

MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(5)-Blazor前端框架搭建

MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(6)-用户登录注册模块开发

MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(7)-用户JWT授权验证

MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(8)-TodoList增删改查功能开发

MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(9)-Docker打包并部署

查看可用的MongoDB版本

访问DokcerHub中的MongoDB镜像库地址:https://hub.docker.com/_/mongo/tags

可以通过 Sort by 查看其他版本的MongoDB,查看最新版本MongoDB镜像(mongo:latest):https://hub.docker.com/_/mongo/tags?page=1&name=latest

此外,我们还可以用docker search mongo命令来查看可用版本:

拉取最新版本的MongoDB镜像

docker pull mongo:latest

注意:tag是可选的,tag表示标签,多为软件的版本,默认是latest版本(最新版)

验证MongoDB镜像是否成功拉取到本地

使用以下命令来查看MongoDB镜像是否成功拉取到本地:

docker images

创建并运行一个MongoDB容器

docker run -itd --name mongo-test -p 27017:27017 mongo --auth

参数说明:

  • -itd:其中,i是交互式操作,t是一个终端,d指的是在后台运行。
  • --name mongo-test:容器名称
  • -p 27017:27017 :映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务。
  • --auth:需要密码才能访问容器服务(注意:安全问题,MongoDB默认是不开启权限验证的,不过设置了这里就相当于修改MongoDB的配置auth=ture启用权限访问)。

进入创建的MongoDB容器

docker exec -it  mongo-test mongosh

MongoDB报错"ongoServerError: not authorized on admin to execute command"

MongoDB默认是不需要用户密码就可以连接的,如果使用命令报错"ongoServerError: not authorized on admin to execute command ",则表示当前登陆用户不具备相应权限。

解决办法:在admin数据库中通过创建一个用户,赋予用户root权限。

# 进入admin数据库
use admin

# 创建一个超级用户
db.createUser(
{
user:"root",
pwd:"123456",
roles:[{role:"root",db:"admin"}]
}
);

#授权登录
db.auth('root','123456')

MongoDB用户权限管理

MongoDB添加用户命令说明

  • user字段,为新用户的名字。
  • pwd字段,用户的密码。
  • cusomData字段,为任意内容,例如可以为用户全名介绍。
  • roles字段,指定用户的角色,可以用一个空数组给新用户设定空角色。在roles字段,可以指定内置角色和用户定义的角色。
  • 超级用户的role有两种,userAdmin或者userAdminAnyDatabase(比前一种多加了对所有数据库的访问,仅仅是访问而已)。
  • db是指定数据库的名字,admin是管理数据库。
  • 不能用admin数据库中的用户登录其他数据库。注:只能查看当前数据库中的用户,哪怕当前数据库admin数据库,也只能查看admin数据库中创建的用户。

首先切换到admin数据库中

# 进入admin数据库
use admin

创建admin超级管理员用户

指定用户的角色和数据库:
(注意此时添加的用户都只用于admin数据库,而非你存储业务数据的数据库)
(在cmd中敲多行代码时,直接敲回车换行,最后以分号首尾)

db.createUser(
{ user: "admin",
customData:{description:"superuser"},
pwd: "admin",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)

创建一个不受访问限制的超级用户

拥有所有权限,不受任何限制

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

创建一个业务数据库管理员用户

只负责某一个或几个数据库的増查改删

db.createUser({
user:"user001",
pwd:"123456",
customData:{
name:'jim',
email:'jim@qq.com',
age:18,
},
roles:[
{role:"readWrite",db:"db001"},
{role:"readWrite",db:"db002"},
'read'// 对其他数据库有只读权限,对db001、db002是读写权限
]
})

MongoDB数据库角色说明

  • 数据库用户角色:read、readWrite;
  • 数据库管理角色:dbAdmin、dbOwner、userAdmin;
  • 集群管理角色:clusterAdmin、clusterManager、4. clusterMonitor、hostManage;
  • 备份恢复角色:backup、restore;
  • 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  • 超级用户角色:root
  • 内部角色:__system

MongoDB中的role详解

  • Read:允许用户读取指定数据库
  • readWrite:允许用户读写指定数据库
  • dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
  • userAdmin:允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户
  • clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
  • readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
  • readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
  • userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
  • dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限
  • root:只在admin数据库中可用。超级账号,超级权限

服务器配置27017的开放端口

Navicat连接mongoDB并创建集合和添加数据

1.连接MongoDB点击这个位置

2、连接参数介绍:

stand alone:独立的

shard cluster:分片集群

replica set:复制集

SRV record:

SRV记录是DNS服务器的数据库中支持的一种资源记录的类型,它记录了哪台计算机提供了哪个服务这么一个简单的信息。

SRV 记录:一般是为Microsoft的活动目录设置时的应用。DNS可以独立于活动目录,但是活动目录必须有DNS的帮助才能工作。

为了活动目录能够正常的工作,DNS服务器必须支持服务定位(SRV)资源记录,资源记录把服务名字映射为提供服务的服务器名字。

活动目录客户和域控制器使用SRV资源记录决定域控制器的IP地址。

一般情况下,我们连接只需要连接主库查数据,所以选择独立的这个连接方式就可以,填写好常规参数可以点击测试连接是否正常,即可连接!

3、新建MongoDB数据库(MyMondoDBTest)

4、新建MongoDB文档(Books)并添加数据

MongoDB从入门到实战之Docker快速安装MongoDB的更多相关文章

  1. Docker 快速安装&搭建 MongDB 环境

    欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...

  2. Docker 快速安装&搭建 Ngnix 环境,并配置反向代理

    欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...

  3. Docker 快速安装&搭建 Mysql 环境

    欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...

  4. 使用 docker 快速安装 oracle 11g

    前言 我们在手动安装oracle数据库时,安装步骤纷繁复杂,耗时较长 在此介绍如何使用docker快速安装oracle 11g 一.docker 及其安装环境 操作系统: [root@centos7 ...

  5. Docker快速安装kafka

    Docker快速安装kafka | 沈健的技术博客 盒子 盒子 博客 分类 标签 友链 搜索 文章目录 同样基于docker-compose安装,Docker快速部署nginx中有讲到,不在重述 1. ...

  6. 在Docker中安装MongoDB

    在Docker中安装MongoDB docker run -p 27017:27017 -v /data/mongodb:/data/db --name mongodb -d mongo --auth ...

  7. centos7 在docker下安装mongodb

    第一步:安装 1.1 查找(查看)mongo相应的版本 [root@localhost ~]# docker search mongo INDEX NAME DESCRIPTION STARS OFF ...

  8. 使用docker快速安装软件

    安装mysql mkdir /opt/mysql /opt/mysql/etc /opt/mysql/data docker run -itd --name mariadb -e MYSQL_ROOT ...

  9. CentOS 7 yum方式快速安装MongoDB

    一.安装环境及配置yum # more /etc/redhat-release CentOS Linux release 7.2.1511 (Core) # vi /etc/yum.repos.d/m ...

  10. Linux - CentOS 7 yum方式快速安装MongoDB

    一.安装环境及配置yum # more /etc/redhat-release CentOS Linux release 7.2.1511 (Core) # vi /etc/yum.repos.d/m ...

随机推荐

  1. 【Java】 DirectByteBuffer堆外内存回收

    PhantomReference虚引用 在分析堆外内存回收之前,先了解下PhantomReference虚引用. PhantomReference需要与ReferenceQueue引用队列结合使用,在 ...

  2. 【算法训练营day8】LeetCode344. 反转字符串 LeetCode541. 反转字符串II 剑指Offer05. 替换空格 LeetCode151. 翻转字符串里的单词 剑指Offer58-II. 左旋转字符串

    [算法训练营day8]LeetCode344. 反转字符串 LeetCode541. 反转字符串II 剑指Offer05. 替换空格 LeetCode151. 翻转字符串里的单词 剑指Offer58- ...

  3. Vulnhub 靶机 pwnlab_init 渗透——详细教程

    1. 下载 pwnlab_ini 靶机的 .ova 文件并导入 VMware: pwnlab下载地址:PwnLab: init ~ VulnHub 导入VMware时遇到VMware上虚机太多,无法确 ...

  4. chrome工具调试

    项目调试的困境 程序开发总会遇到各种各样的问题,为什么实际结果和预期结果不一致? 这个时候如果能深入程序内部抽丝剥茧去一探究竟再好不过! 而chrome工具是前端开发的杀手锏,经常听到的一句话是: 出 ...

  5. MPC:百万富翁问题

    学习文章:"一起学MPC:(一)百万富翁问题"和"[隐私计算笔谈]MPC系列专题(一):安全多方计算应用场景一览" 百万富翁问题 将问题具体化: Alice有\ ...

  6. 【云原生 · Kubernetes】搭建Harbor仓库

    [云原生 · Kubernetes]Kubernetes基础环境搭建 接着上次的内容,后续来了! 4.部署Harbor仓库 在master节点执行脚本k8s_harbor_install.sh即可完成 ...

  7. Armv8之Execution State 和 Exception Level(一)

    @ 目录 1. 典型的Exception Level使用模型 2.异常相关术语 3. Execution State 3.1 两种Execution State 3.2 决定Execution Sta ...

  8. ARM MMU架构 -- CPU如何访问MMU及DRAM

    <ARM Architecture Reference Manual ARMv8-A>里面有Memory层级框架图,从中可以看出L1.L2.DRAM.Disk.MMU之间的关系,以及他们在 ...

  9. 说一下 ArrayDeque 和 LinkedList 的区别?

    大家好,我是小彭. 在上一篇文章里,我们聊到了基于链表的 Queue 和 Stack 实现 -- LinkedList.那么 Java 中有没有基于数组的 Queue 和 Stack 实现呢?今天我们 ...

  10. day14 I/O流——序列化与反序列化 & 计算机网络五层架构 & TCP的建立连接与断开连接

    day 14 序列化与反序列化 序列化 将对象转化成特定格式的字符串文件(字节文件)叫做序列化 1.一个类要想实现序列化,必须实现serializable接口 2.序列化用途 ​ 1)把对象的字节序列 ...