下载
选择社区版
安装
在自己想要放置的位置新建一个mongoDB
(文件夹名称随意)文件夹,将下载的tgz
包解压后放在该目录下(这里我将解压后文件夹改名为mongodb
),然后新建一个db
(文件夹名称随意)文件夹,用于存放数据
启动
在
mongodb
文件夹下的bin
目录内打开终端,执行./mongod --dbpath /Users/***/mongoDB/db
--dbpath
后的路径为指定的数据存放路径,指向一个文件夹,在这个例子中就是db
文件夹的绝对路径
终端输出日志如下:
从日志可以看到
"address":"127.0.0.1"
和"port":27017
打开浏览器输入127.0.0.1:27017
,出现如下页面则表示启动成功
如果不想让终端中出现这么多日志记录,而是将日志保存在一个文件中,可以修改启动命令如下:
./mongod --dbpath /Users/***/mongoDB/db --lopath /Users/***/mongoDB/mongo.log
--logpath
后的路径为存放日志记录的文件,指向一个文件,可以不用新建,执行后会自动生成
命令执行后,终端中不会再出现日志记录滚动,而是存在了/Users/***/mongoDB/mongo.log
这个文件中
配置环境变量
上面每次执行mongod
命令时,都需要进入到mongod
所在目录,即/bin
路径下,非常麻烦,因此可以将/bin
路径添加到环境变量,这样就可以在任意路径下执行mongod
命令了
我的终端是zsh
,配置文件是.zshrc
,打开该文件,在最后一行添加
export PATH=${PATH}:/Users/*****/mongoDB/mongodb/bin
,然后保存关闭
${PATH}:
后面的路径根据自己放置的路径来写
在.zshrc
所在目录打开终端,执行命令source .zshrc
,使配置文件生效
测试查mongod
版本
MacBookPro Desktop % mongod --version
db version v5.0.8
Build Info: {
"version": "5.0.8",
"gitVersion": "c87e1c23421bf79614baf500fda6622bd90f674e",
"modules": [],
"allocator": "system",
"environment": {
"distarch": "x86_64",
"target_arch": "x86_64"
}
}
使用配置文件启动
即使配置了环境变量,每次启动时还是要指定数据存放路径,还是略显麻烦,所以可以使用配置文件的形式启动
在mongoDB
文件夹下新建mongod.conf
文件作为配置文件
mongoDB
目前支持两种配置文件格式,一种是key=value
格式,另一种是yaml
格式,新版本的MongoDB
更推荐使用yaml
格式的配置文件写法
key=value
格式
dbpath=/Users/***/mongoDB/db # 数据库文件
logpath=/Users/***/mongoDB/mongod.log # 日志文件
logappend=true # 日志采用追加模式,日志会追加到现有的日志文件,不会重新创建一个新文件
journal=true # 启用日志文件,默认启用
quiet=true # 这个选项可以过滤掉一些无用的日志信息,调试模式下设置为 false
port=27017
启动后光标闪烁
yaml
格式
# 进程相关
processManagement:
# 是否后台运行
fork: true
# 系统日志相关
systemLog:
# 使用文件存储日志
destination: file
# 日志存储文件
path: "/Users/****/mongoDB/mongod.log"
# 是否以追加的形式记录日志(会将新记录追加到现有日志文件的末尾)
logAppend: true
# 数据相关
storage:
# 是否回滚日志
journal:
enabled: true
# 数据存储目录
dbPath: /Users/****/mongoDB/db
# 网络配置相关
net:
# 端口,默认端口27017
port: 27017
# 绑定ip
bindIp: 127.0.0.1
启动后出现
about to fork child process, waiting until server is ready for connections.
forked process: 21333
child process started successfully, parent exiting
yaml基本语法规则
- 大小写敏感
- 使用缩进表示层级关系
- 缩进时不允许使用Tab键,只允许使用空格。
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
- #表示注释,从这个字符一直到行尾,都会被解析器忽略,这个和python的注释一样
注意:yaml
格式每个属性和值之间要有个空格,并且备注最好不要和配置项同一行,因为我在配置中将备注和配置内容写在同一行,并且在中间使用Tab
隔开,导致启动失败
使用配置文件启动命令
在配置文件所在目录下执行:mongod -f ./mongod.conf
或mongod --config ./mongod.conf
启动失败解决
有时候非正常关闭mongodb
,可能会导致下一次启动时失败,此时可以先删除日志文件,如果重要,可以先备份,然后进入到数据文件夹下,在本例中为db
文件夹,删除mongod.lock
文件,最后在启动命令最后追加--repair
修复并启动
mongod -f ./mongod.conf --repair
若还是失败,再次执行
mongod -f ./mongod.conf
关闭
此时,关闭终端窗口,并不会关闭mongDB
还是在/mongodb/bin
目录下,打开终端,如果上一步已经配置环境变量,可以在任意位置打开终端
执行以下三个命令:
-
./mongo
(上一步已经配置过环境变量的可以直接执行mongo
,该命令是连接mongodb
,并对其进行操作) -
use admin
(牵涉到服务器配置层面的操作,需要先切换到admin数据库) -
db.shutdownServer()
此时再刷新刚才打开的浏览器页面,就会出现页面无法访问,即表示
mongodb
关闭成功
注意:
mongod
用于启动mongodb,可以叫服务端
mongo
用于连接、操作mongodb,可以叫客户端