使用Docker安装MongoDB

一、什么是MongoDB

概念:MongoDB 是一个基于分布式文件存储的数据库。是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
目的:为web应用提供可扩展的高性能数据存储解决方案

二、MongoDB的安装

这里我使用docker来安装MongoDB
关于docker的使用可以参考:https://blog.csdn.net/AAIT11/article/details/130075122

1. 拉取MongoDB镜像
dokcer pull mongo

默认会拉取最新的镜像
使用Docker安装MongoDB_第1张图片

2. 创建MongoDB容器
docker run -dit --name mongo -p 27017:27017 mongo:latest --auth

参数说明

  • -i:表示运行容器
  • -t:表示容器启动后进入其命令行
  • -d:守护式方式创建容器在后台运行
  • -name:容器名称
  • -p 27017:27017:端口映射(宿主机端口:容器端口),mongoDB默认是27017端口
  • –auth:访问mongo需要鉴权(账号密码访问),这个参数要放在最后面,否则会报错

使用Docker安装MongoDB_第2张图片

3. 进入容器并访问mongoDB
docker exec -it mongo /bin/mongosh

使用Docker安装MongoDB_第3张图片

说明:
如果MongoDB6.0及以上使用:
docker exec -it mongo /bin/mongosh
如果是6.0以下的版本使用:
docker exec -it mongo /bin/mongo

三、创建MongoDB用户

1. mongo用户权限
read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除、查看统计或访问system.profile
dbOwner:允许用户在指定数据库中执行任意操作,增、删、改、查等
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin库中可用,赋予用户所有数据库的读权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库userAdmin权限
dbAdminAnyDatabase: 只在admin数据库中可用,赋予用户所有数据库dbAdmin权限
root:只在admin数据库中可用。超级管理员用户,超级权限
2. 创建用户
需求:创建一个test用户,并赋予权限
  1. 创建账号
db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'test'},"readWriteAnyDatabase"]});

image.png

  1. 验证用户
db.auth("admin","123456")

image.png

  1. 使用账号密码登录数据库

先退出容器,因为之前直接进入命令行

docker exec -it mongo /bin/bash
mongosh -u admin -p 123456 

使用Docker安装MongoDB_第4张图片

  1. 查看用户
#切换到admin
use admin
# 查看用户
show users

使用Docker安装MongoDB_第5张图片

  1. 验证权限
show dbs

image.png
如果不是通过账号密码进入的mongoShell执该命令,则看不到数据库中的,因为没有权限
a0b4c9f0494945b97dc202e69c3c00e.png

你可能感兴趣的:(MongoDB,mongodb,数据库,nosql)