4

MongoDB从入门到实战之Docker快速安装MongoDB - 追逐时光者

 1 year ago
source link: https://www.cnblogs.com/Can-daydayup/p/16838976.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

文章正文:

      在上一篇文章中带领带同学们快速入门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

1336199-20220918181523098-804240778.png

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

1336199-20220918181652213-1731399645.png

拉取最新版本的MongoDB镜像

docker pull mongo:latest

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

1336199-20220918181850432-728077476.png

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

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

docker images
1336199-20220918182042934-439954334.png

创建并运行一个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启用权限访问)。

1336199-20220918182931175-1708576518.png

1336199-20220918183139655-1291710365.png

进入创建的MongoDB容器

docker exec -it  mongo-test mongosh
1336199-20221016143002826-1096026196.png

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

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

1336199-20221210165612041-1936739153.png

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

# 进入admin数据库
use admin

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

#授权登录
db.auth('root','123456')
1336199-20221210171750174-813180208.png

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:'[email protected]',
        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的开放端口

1336199-20221016144754179-853573000.png

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

1.连接MongoDB点击这个位置

1336199-20221016151048793-1143153623.png

2、连接参数介绍:

stand alone:独立的

shard cluster:分片集群

replica set:复制集

SRV record:

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

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

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

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

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

1336199-20221016151637458-97446919.png

3、新建MongoDB数据库(MyMondoDBTest)

 

1336199-20221029161927586-1219803905.png

 

1336199-20221029162006017-1332853320.png

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

1336199-20221029162118430-1198257195.png

 1336199-20221029162152943-1945038473.png

 

1336199-20221029162238789-1874865475.png
1336199-20221029162518434-1592674565.png

 

1336199-20221029162530786-1347218979.png

Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK