如何在Docker上安装MongoDB(MongoDB安装教程)

@@mongodb docker

 

前言

随着越来越多的应用部署到了Docker容器,作为常见基础组件的MongoDB也越来越多的需要在Docker上部署,为了快速帮助同学们把MongoDB在Docker容器上部署起来,我特意整理了这篇如何把MongoDB安装在Docker上的安装教程。废话不多说,我们先花了几分钟开始的把MongoDB环境搭建起来。

 

查看可用的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镜像

codeduidaima.com

  1. docker pull mongo:latest

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

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

codeduidaima.com

  1. docker images


创建并运行一个MongoDB容器

codeduidaima.com

  1. 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容器

codeduidaima.com

  1. 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权限。

codeduidaima.com

  1. # 进入admin数据库
  2. use admin
  3. # 创建一个超级用户
  4. db.createUser(
  5. {
  6. user:"root",
  7. pwd:"123456",
  8. roles:[{role:"root",db:"admin"}]
  9. }
  10. );
  11. #授权登录
  12. db.auth('root','123456')


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

 


首先切换到admin数据库中

codeduidaima.com

  1. # 进入admin数据库
  2. use admin

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

codeduidaima.com

  1. db.createUser(
  2. { user: "admin",
  3. customData:{description:"superuser"},
  4. pwd: "admin",
  5. roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  6. }
  7. )

创建一个不受访问限制的超级用户
拥有所有权限,不受任何限制

codeduidaima.com

  1. db.createUser(
  2. {
  3. user:"root",
  4. pwd:"123456",
  5. roles:[{role:"root",db:"admin"}]
  6. }
  7. );

创建一个业务数据库管理员用户
只负责某一个或几个数据库的増查改删

codeduidaima.com

  1. db.createUser({
  2. user:"user001",
  3. pwd:"123456",
  4. customData:{
  5. name:'jim',
  6. email:'jim@qq.com',
  7. age:18,
  8. },
  9. roles:[
  10. {role:"readWrite",db:"db001"},
  11. {role:"readWrite",db:"db002"},
  12. 'read'// 对其他数据库有只读权限,对db001、db002是读写权限
  13. ]
  14. })

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)并添加数据

 

 

转 https://www.duidaima.com/Group/Topic/ArchitecturedDesign/9182

posted @ 2023-07-26 18:24  dreamw  阅读(885)  评论(0编辑  收藏  举报