安装MoogoDB, 进入容器, mongo shell操作mongoDB [ 包含 Docker-Compose方式、普通方式 ]
文章目录
- 安装MoogoDB, 进入容器, mongo shell操作mongoDB [ 包含 Docker-Compose方式、普通方式 ]
- `附件:单词本`
- `附件:什么是 . yml 后缀文件 ?`
- `附件 .yml书写格式`
- `基本语法`
- `附件:hub.Docker mongo文档地址`
- `1. 安装镜像:`
- * 拓展:[镜像查询命令]
- `2. 运行镜像:`
- `2.1 shell命令行 方式`
- `无校验AUTH 版 `
- `校验AUTH 版 `
- `2.2 docker compose.yml 方式`
- ` 无校验AUTH 版`
- `校验AUTH 版`
- `注意!![ environment:书写格式 ] `
- `3. 进入运行的mongo容器`
- `4. bash中进入mongo shell `
- `版本更替, 进入shell的命令 | mongo [ 版本 < 6.0 ] =>f mongosh [ 版本 > 6.0]`
- `5. 查看mongoDB数据库`
- 5.1 [不含auth校验]
- 5.2 [含auth校验]
- `6. 注意!!`
附件:单词本
音标 | 注释 | |
container | [kənˈteɪnə®]:[ken’ tei’ ne’ er] | 容器 |
volume | [ˈvɒljuːm] :[wao’ liu’ mu] | 卷 |
附件:什么是 . yml 后缀文件 ?
- ** YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式;
- YAML是一种直观的能够被电脑识别的的数据数据序列化格式,并且容易被人类阅读;
- 容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,
- 比如: C/C++, Ruby, Python, Java, Perl, C#, PHP等。YML文件是以数据为核心的,比传统的xml方式更加简洁。
- YML文件的扩展名可以使用.yml或者.yaml**
附件 .yml书写格式
基本语法
*文件格式: .yml
使用缩进表示层级关系
缩进不允许
使用tab,只允许空格
缩进空格数不重要,相同层的元素左对齐即可
注释符号:#
(1) 键值
key: value
(2)数组:按次序排列的值
Languages:
- Ruby
- Perl
- Python
附件:hub.Docker mongo文档地址
1. 安装镜像:
docker pull mongo:[tag]
* 拓展:[镜像查询命令]
docker search mongo
2. 运行镜像:
[ 2.1 普通方式 | 2.2 docker compose方式; ]
2.1 shell命令行 方式
无校验AUTH 版
docker run --name mymongo --restart=always -p 27017:27017 -v ${PWD}/mongo/db:/data/db -v ${PWD}/mongo/etc:/data/etc/ -itd mongo:5.0.5
校验AUTH 版
docker run --name mymongo --restart=always -p 27017:27017 -e "MONGO_INITDB_ROOT_USERNAME=root" -e "MONGO_INITDB_ROOT_PASSWORD=123" -v ${PWD}/mongo/db:/data/db -v ${PWD}/mongo/etc:/data/etc/ -itd mongo:5.0.5
-e 环境变量写法
-e "MONGO_INITDB_ROOT_USERNAME=root" -e "MONGO_INITDB_ROOT_PASSWORD=123"
# 或者 都可以
-e MONGO_INITDB_ROOT_USERNAME="root" -e MONGO_INITDB_ROOT_PASSWORD=123
参数 | 作用 | 备注 |
–privileged | 拥有真正的root权限 | |
–restart=always | Docker服务重启容器也启动 | |
–name | 容器别名 | |
-p | 主机(宿主)端口:容器端口 | |
-v | 挂载 [ 主机(宿主)目录:容器目录 ] | 多个挂载目录, 用多个 -v |
${PWD} / $PWD | 当前工作目录的绝对路径 | |
-i | 以交互模式运行容器,通常与-t同时使用 | |
-t | 为容器重新分配一个伪输入终端,通常与-i同时使用 | |
-d | 后台运行容器,并返回容器ID,也即启动守护式容器 |
2.2 docker compose.yml 方式
无校验AUTH 版
2.2.1 编写docker-compose.yml 文件;
version: '2.12.2' # docker compose 版本号
services:
mongo:
image: mongo:5.0.5
restart: always
container_name: mongodb505
ports:
- 27017:27017
volumes:
- ${PWD}/data/db:/data/db
校验AUTH 版
运行时直接创建一个初始用户;
root
123
注意!![ environment:书写格式 ]
environment:写法格式
# [ 横线 + 键+ 等号 + 值 ]
environment:
- AUTH=yes
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_ROOT_PASSWORD=admin123
# 或者 [ 键 + 冒号 + 空格 + 值 ]
environment:
AUTH: yes
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: admin123
version: '2.12.2'
services:
mongo:
image: mongo
restart: always
container_name: mongodbMother-init-username
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=123
ports:
- 27017:27017
volumes:
- ${PWD}/mother/db:/data/db
2.2.2 启动docker compose
# docker-compose.yml 目录下执行命令:
docker compose up -d
3. 进入运行的mongo容器
docker exec -it mymongo bash
# or
docker exec -it mymongo /bin/bash
成功!
4. bash中进入mongo shell
版本更替, 进入shell的命令 | mongo [ 版本 < 6.0 ] =>f mongosh [ 版本 > 6.0]
the “mongo” shell has been superseded by “mongosh”,
which delivers improved usability and compatibility.The “mongo” shell has been deprecated and will be removed in
an upcoming release
# 6.0 版本之前,进入mongo shell
mongo
# 6.0 版本开始, 进入mongo shell
mongo [命令被遗弃]
# 改为
mongosh
成功!
5. 查看mongoDB数据库
5.1 [不含auth校验]
show dbs
5.2 [含auth校验]
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=123
设定的初始用户,是针对admin数据库下;
admin这个数据库是系统自带的数据库,**他的用户可以访问任何其他数据库的数据**,也叫做超级管理员
- db.auth(arg1,arg2) :arg1,arg2两者
数据类型都为string
;即便MONGO_INITDB_ROOT_PASSWORD: 123 值为Number类型
use admin
db.auth('root','123')
成功!
6. 注意!!
volumes:
- ${PWD}/mother/db:/data/db
如果当前容器rm后 没有删除宿主机挂载目录;
重新运行一个相同挂载路径的新容器,原有数据库admin中创建的用户root,123 还会保留auth;