MongoDB 是一个免费的开源跨平台面向文档的 NoSQL 数据库程序。
1. 查看可用的 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
- 进入 docker 容器,然后进入 admin 数据库
docker exec -it mongo4.2 bash
- 也可以简写成这样
docker exec -it mongo4.2 mongo admin
- 使用远程连接软件时要注意一个问题
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)组成。
- 资源(resource)包括:数据库、集合、部分集合和集群;
- 操作(action)包括:对资源进行的增、删、改、查(CRUD)操作。
常用的内置角色
角色 权限描述 | |
read | 可以读取指定数据库中任何数据。 |
readWrite | 可以读写指定数据库中任何数据,包括创建、重命名、删除集合。 |
readAnyDatabase | 可以读取所有数据库中任何数据(除了数据库 config 和 local 之外) |
readWriteAnyDatabase | 可以读写所有数据库中任何数据(除了数据库 config 和 local 之外) |
dbAdmin | 可以读取指定数据库以及对数据库进行清理、修改、压缩、获取统计信息、执行检查等操作。 |
dbAdminAnyDatabase | 可以读取任何数据库以及对数据库进行清理、修改、压缩、获取统计信息、执行检查等操作(除了数据库 config 和 local 之外) |
clusterAdmin | 可以对整个集群或数据库系统进行管理操作。 |
userAdmin | 可以在指定数据库创建和修改用户。 |
userAdminAnyDatabase | 可以在指定数据库创建和修改用户(除了数据库 config 和 local 之外) |