MongoDB 是一个免费的开源跨平台面向文档的 NoSQL 数据库程序。

docker mongodb数据目录移植 docker安装mongo_docker


1. 查看可用的 MongoDB 版本

访问 MongoDB 镜像库地址

还可以用 docker search mongo 命令来查看可用版本,默认是最新版本 mongo:latest

2. 拉取 MongoDB 镜像

拉取官方镜像(我们这里选择 4.2.13,如果不写后面的版本号则会自动拉取最新版)

docker pull mongo:4.2.13 # 拉取 mongodb4.2.13
docker pull mongo        # 拉取最新版mongodbl镜像

3. 查看本地镜像

检查是否拉取成功

docker images

4. 运行容器

镜像安装完成后,我们可以使用以下命令来运行 mongo 容器:

docker run --name mongo4.2 -p 27017:27017 \
-v /usr/local/docker/mongodb/data:/data/db \
-d --restart=always \
mongo:4.2.13

也可以重命名容器对象

docker rename reverent_mestorf mongo4.2

也可以设置容器自动重启

docker container update --restart=always 容器名字

5. 安装成功

检查容器是否正确运行

docker ps
或 docker container ls
  • 可以看到容器 ID,容器的源镜像,启动命令,创建时间,状态,端口映射信息,容器名字

6. 连接 mongodb

  1. 进入 docker 容器,然后进入 admin 数据库
docker exec -it mongo4.2 bash
  1. 也可以简写成这样
docker exec -it mongo4.2 mongo admin
  1. 使用远程连接软件时要注意一个问题

7. 创建用户

MongoDB 采用**基于角色的访问控制(RBAC)**来确定用户的访问。 授予用户一个或多个角色,确定用户对 MongoDB 资源的访问权限和用户可以执行哪些操作。 用户应该只有最小权限集才能确保最小权限的系统。
MongoDB 系统的每个应用程序和用户都应该映射到不同的用户。 这种访问隔离便于访问撤销和持续的用户维护。

创建管理员账号(拥有所有权限)

> db.createUser({     user: 'root',     pwd: 'admin',     roles: [{ role: 'userAdminAnyDatabase', db: 'mydb' }], })SuccessFully added user:{}

开启身份验证

> db.auth('root', '123456')1 // 代表授权验证成功

添加数据库用户

> use mydb> db.createUser({	 user: 'root',	 pwd: '123456',	 roles: [{ role: 'readWrite', db: 'mydb' }], })> db.auth('root', '123456')

列出数据库的所有用户

> db.getUsers()

删除数据库用户

> db.dropUser('用户名')true

8. 权限

权限由指定的数据库资源(resource)以及允许在指定资源上进行的操作(action)组成。

  1. 资源(resource)包括:数据库、集合、部分集合和集群;
  2. 操作(action)包括:对资源进行的增、删、改、查(CRUD)操作。

常用的内置角色

角色 权限描述

read

可以读取指定数据库中任何数据。

readWrite

可以读写指定数据库中任何数据,包括创建、重命名、删除集合。

readAnyDatabase

可以读取所有数据库中任何数据(除了数据库 config 和 local 之外)

readWriteAnyDatabase

可以读写所有数据库中任何数据(除了数据库 config 和 local 之外)

dbAdmin

可以读取指定数据库以及对数据库进行清理、修改、压缩、获取统计信息、执行检查等操作。

dbAdminAnyDatabase

可以读取任何数据库以及对数据库进行清理、修改、压缩、获取统计信息、执行检查等操作(除了数据库 config 和 local 之外)

clusterAdmin

可以对整个集群或数据库系统进行管理操作。

userAdmin

可以在指定数据库创建和修改用户。

userAdminAnyDatabase

可以在指定数据库创建和修改用户(除了数据库 config 和 local 之外)