1 缘起
开启容器化之路。
2 容器化MongDB
2.1 查看镜像
docker search mongodb
2.2 安装
- 前台安装
sudo docker run \
--name mongodb \
-p 27017:27017 \
-v /home/xindaqi/mongodb/conf:/data/configdb \
-v /home/xindaqi/data/mongodb-data:/data/db \
-v /home/xindaqi/mongodb/logs:/data/log \
mongo --auth
- 守护进程安装
sudo docker run \
--name mongodb \
-p 27017:27017 \
-v /home/xindaqi/mongodb/conf:/data/configdb \
-v /home/xindaqi/data/mongodb-data:/data/db \
-v /home/xindaqi/mongodb/logs:/data/log \
-d mongo --auth
- Docker重启后自动重启MongoDB
sudo docker run \
--name mongodb \
--restart always \
-p 27017:27017 \
-v /home/xindaqi/mongodb/conf:/data/configdb \
-v /home/xindaqi/data/mongodb-data:/data/db \
-v /home/xindaqi/mongodb/logs:/data/log \
-d mongo --auth
3 用户操作
3.1 登录
docker exec -it container_id mongosh admin
MongoDB版本:6.0.6
Mongsh版本:1.9.0
3.2 创建用户
MongoDB默认没有用户,
需要手动创建用户。
db.createUser({ user: 'admin', pwd: 'admin123456', roles: [ { role: "root", db: "admin" } ] });
3.3 验证用户
db.auth("admin", "admin123456");
4 客户端
NoSQLBooster For MongoDB
传送门:https://www.mongobooster.com/downloads
4.1 手动创建连接
4.2 基础配置
4.3 用户名密码
4.4 连接状态
5 CURD
5.1 用户角色
序号 | 角色 | 描述 |
---|---|---|
1 | read | 提供读取所有非系统的集合(数据库) |
2 | readWrite | 提供读写所有非系统的集合(数据库)和读取所有角色的所有权限 |
3 | dbAdmin | 提供执行管理任务的功能,例如与架构相关的任务,索引编制,收集统计信息。此角色不授予用户和角色管理权限。 |
4 | dbOwner | 提供对数据库执行任何管理操作的功能。此角色组合了readWrite,dbAdmin和userAdmin角色授予的权限。 |
5 | userAdmin | 提供在当前数据库上创建和修改角色和用户的功能。由于userAdmin角色允许用户向任何用户(包括他们自己)授予任何权限,因此该角色还间接提供对数据库的超级用户访问权限,或者,如果作用于管理数据库,则提供对群集的访问权限。 |
6 | clusterAdmin | 提供最佳的集群管理访问。此角色组合了clusterManager,clusterMonitor和hostManager角色授予的权限。此外,该角色还提供了dropDatabase操作。 |
7 | readAnyDatabase | 仅在admin 数据库中使用,提供所有数据库的读权限。 |
8 | readWriteAnyDatabase | 仅在admin 数据库中使用,提供所有数据库的读写权限 |
9 | userAdminAnyDatabase | 仅在admin 数据库中使用,提供与userAdmin相同的用户管理操作访问权限,允许用户向任何用户(包括他们自己)授予任何权限,因此该角色还间接提供超级用户访问权限。 |
10 | dbAdminAnyDatabase | 仅在admin 数据库中使用,提供与dbAdmin相同的数据库管理操作访问权限,该角色还在整个群集上提供listDatabases操作。 |
11 | root | 仅在admin 数据库中使用,提供超级权限 |
5.2 查看数据库
show dbs
5.3 创建数据库
格式:
use database_name
数据库不存在:创建数据库
数据库存在:切换到该数据库
use tutorial
创建数据库后,会自动切换到数据库,当数据库中没有数据时,查看数据库,并不会在列表中展示。
5.4 为数据库添加用户
db.createUser({ user: 'tutorial', pwd: 'admin123456', roles: [ { role: "dbOwner", db: "tutorial" } ] });
6 FAQ
6.1 无法使用mongo登录
xindaqi@xindaqi:~/mongodb$ docker exec -it ece80fb0f658 mongo admin
OCI runtime exec failed: exec failed: unable to start container process: exec: “mongo”: executable file not found in $PATH: unknown
MongoDB5.0以后,使用mongosh登录。
官方:https://github.com/docker-library/mongo/issues/558
docker exec -it ece80fb0f658 mongosh admin