MongoDB 的安装和配置
MongoDB 属于数据库管理系统(DBMS)中的非关系型数据库(NoSQL),是由 C++ 语言编写的,是一个基于分布式文件存储的开源数据库系统
MongoDB 旨在为 web 应用提供可扩展的高性能数据存储解决方案
MongoDB 将数据存储为一个文档,数据结构由键值 (key=>value) 对组成。MongoDB 文档类似于 JSON 对象,字段值可以包含其他文档、数组及文档数组
官网下载链接:https://www.mongodb.com/try/download/community
macOS
根据 CPU 架构选择对应的压缩包,M 芯片系列的 mac 选择 macOS ARM 64
下载后将压缩包解压,并将解压后得到的目录重命名为 mongodb 移至 PATH 变量路径下(PATH 变量可通过 echo $PATH 查看)
PATH 变量也可以通过修改配置文件进行更改(bash-> ~/.bash_profile,zsh-> ~/.zshrc)
mongodb 子目录 bin 下包含三个二进制文件
# install_compass 用来安装 MongoDB 的图形化操作界面
# mongod 为 MongoDB 服务的 daemon 进程
# 对于分片集群,mongos 实例提供客户端应用程序和分片集群之间的接口
安装后可直接通过命令行启动 MongoDB 服务
mkdir -p /usr/local/mongodb/{data,log,etc}
mongod --fork --dbpath /usr/local/mongodb/data/ --logpath /usr/local/mongodb/log/mongo.log --logappend
# --fork 指定进程在后台运行
# --dbpath 指定数据存放路径
# --logpath 指定日志存放路径
# --logappend 指定日志以追加的形式写入文件,之前的日志不会被覆盖
mac 安装 mongosh 命令:brew install mongosh
# 图中 mongosh 等价于 mongosh "mongodb://127.0.0.1:27017"
# mongod 服务默认监听本地 27017 端口,图中 test 表示当前在使用的数据库,但使用 show dbs 命令看到当前的数据库为空,这是因为 MongoDB 不会显示数据为空的数据库,而且 use 后面可以跟不存在的数据库名,区别于大部分关系型数据库(RDBMS)
# 也可以在本地访问 127.0.0.1:27017 ,出现如上所示表示 mongod 服务正常运行
也可将 mongod 服务启动的命令写入配置文件中,在启动时使用 -f 或 --config 参数指定配置文件即可
# mongod.conf
processManagement:
fork: true
storage:
dbPath: /usr/local/mongodb/data
net:
port: 27017
bindIp: 127.0.0.1
systemLog:
destination: file
path: /usr/local/mongodb/log/mongo.log
logAppend: true
security:
authorization: enabled
Debian
官方文档:https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-debian/
# 安装基础软件
apt-get install gnupg curl -y
# 下载 gpg key
curl -fsSL https://pgp.mongodb.com/server-7.0.asc | gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor
# 配置 MongoDB apt source
# 官方源速度慢可将 url 换为 https://mirrors.tuna.tsinghua.edu.cn/mongodb/apt/debian
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] http://repo.mongodb.org/apt/debian $(lsb_release -cs)/mongodb-org/7.0 main" | \
tee /etc/apt/sources.list.d/mongodb-org-7.0.list
# 安装最新版 mongodb-server 和 mongosh
apt-get update
apt-get install -y mongodb-org-server mongodb-mongosh
# 启动 mongodb 服务
systemctl daemon-reload
systemctl enable mongod --now
# 运行 mongosh 命令
mongosh "mongodb://127.0.0.1:27017"
docker-compose
# mkdir -p data/{mongo_db,mongo_configdb}
version: '3'
services:
# MongoDB: https://hub.docker.com/_/mongo/
mongodb:
restart: always
image: mongo:7.0.1
container_name: mongodb
ports:
- 27017:27017
volumes:
- type: bind
source: ./data/mongo_db
target: /data/db
- type: bind
source: ./data/mongo_configdb
target: /data/configdb
- type: bind
source: ./mongod.conf
target: /etc/mongod.conf
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: mongo-password
# mongod.conf
processManagement:
fork: true
storage:
dbPath: /data/mongo_db
journal:
enabled: true
net:
port: 27017
bindIp: 0.0.0.0
systemLog:
destination: file
path: /data/log/mongo.log
logAppend: true
security:
authorization: enabled
# 启动 mongodb 容器
docker-compose up -d
# 本机连接 mongodb 容器
mongosh -u root -p mongo-password "mongodb://127.0.0.1:27017"
mongosh -u root -p mongo-password --host localhost --port 27017
# 非本机连接 mongodb 容器
mongosh -u root -p mongo-password "mongodb://MongoDB 容器所在宿主机 IP:27017"
mongosh -u root -p mongo-password --host "MongoDB 容器所在宿主机 IP" --port 27017