MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。
1. 官网下载地址 :
https://www.mongodb.com/(官网的下载速度慢)或者直接下载我这里的https://download.csdn.net/download/feixin369/89666669(1积分)
下载社区版,解压,解压后重命名为 mongodb (哈哈哈,大家都这么重命名的)
2. 安装位置
安装没有固定位置,但是一般都放在 /usr/local 下面, 注: mac 的/usr/local 对用户时隐藏的,可以在访达中使用 command+shift+G 搜索进入
3.配置环境变量
在终端上打开环境变量
open .bash_profile
这里很多 mac 一开始是没有这个文件的,没有的话就在终端上创建一个 touch .bash_profile
添加环境配置,这样以后就不用每次都 cd 到 mongodb 的 bin 目录开启服务了(注意: 这里 /usr/local/mongodb/bin 为你安装 mongodb 的目录)
增加如下代码:
export PATH=${PATH}:/usr/local/mongodb/bin
然后执行
source .bash_profile
运行命令,即可查看 mongodb 版本
mongod -version
显示如下,就算成功了:
linwinwin@LinwinwindeMacBook-Pro etc % mongod -version
db version v5.0.9
Build Info: {
"version": "5.0.9",
"gitVersion": "6f7dae919422dcd7f4892c10ff20cdc721ad00e6",
"modules": [],
"allocator": "system",
"environment": {
"distarch": "x86_64",
"target_arch": "x86_64"
}
}
linwinwin@LinwinwindeMacBook-Pro etc %
此时新开一个终端输入 mongon -version 应该也是可以运行命令的,但是我遇到了一个一个问题就是会报 zsh: command not found xxx 的错误
解决方案:是将 .bash_profile 里面的配置放入到 .zshrc 文件中就可以了,步骤和上面一样
1.打开终端输入 open .zshrc (没有就 touch .zshrc 创建一个)
2.把 .bash_profile 的配置放进来(就是 export PATH 之类的)
3. source .zshrc 就ok了
4. 基本配置
如果和我一样是从官网上直接下载的,会发现在文件路径下是没有关于日志及数据存放的位置的,所以要新建两个文件夹(log:日志存储、data:数据存放)。这两个文件夹存放的位置任意的,但是为了方便查找,我们还是放在/usr/local/mongodb下。
进入 mongodb 目录
cd /usr/local/mongodb
创建 data 和 log 文件夹(名字可以是其他的,不强制)
mkdir data log
由于读写权限的问题, 需要给这两个文件夹赋予读写权限, 这里 linwinwin 是我的用户名,要替换成你自己的
sudo chown linwinwin /usr/local/mongodb/data
sudo chown linwinwin /usr/local/mongodb/log
5.启动
⚠️当前的位置是/usr/local/mongodb, 所以这里的 --dbpath 是 data; --fork表示在后台运行 --logappend 表示追加
mongod --fork -dbpath data --logpath log/mongo.log --logappend
// 出现如下,则表示启动成功
about to fork child process, waiting until server is ready for connections.
forked process: 4649
child process started successfully, parent exiting
// 新开一个终端窗口 输入命令 mongo
mongo
// 展示一个箭头则表示启动成功
// 打开浏览器输入: http://127.0.0.1:27017/
It looks like you are trying to access MongoDB over HTTP on the native driver port.
// 出现上面情况就算成功了启动成功
6.关闭mongodb 服务
简单暴力的ctrl + c
//1.切换到管理员
use admin
// 2.运行命令(参数可写可不写)
db.shutdownServer({force:true});
// 展示如下:关闭成功
server should be down...
// 通过浏览器访问 http://127.0.0.1:27017/ 拒绝连接
这里关闭服务如果是非正常关闭的话(如直接删除终端等),下一次再开启mongodb时会报错的,会报一个 ERROR: child process failed, exited with error number 100 这类的错误,这个遇到的话自行百度解决,我今天一开始就遇到了:>(弄了我好久)
7.通过配置文件启动
上面那种启动 mongodb 服务端方式太麻烦了,因此可以 配置一个启动文件,我们在 mongodb 文件夹中新建 etc 文件夹, 在 etc 文件中新建 mongodb.conf 文件
//在mongodb 文件夹下
1.mkdir etc
//在 etc 文件中新建 mongodb.conf
2. touch mongodb.conf
// 配置 mongodb.conf
3. vim mongodb.conf
// 在 mongodb.conf 中配置如下信息
dbpath=/usr/local/mongodb/data
#日志输出文件路径
logpath=/usr/local/mongodb/log/mongo.log
#错误日志采用追加模式,配置这个选项后mongodb的日志会追加到现有的日志文件,而不是从新创建一个新文件
logappend=true
#启用日志文件,默认启用
#journal=true
#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
quiet=false
#是否后台启动,有这个参数,就可以实现后台运行
fork=true
#端口号 默认为27017
port=27017
#指定存储引擎(默认不需要指定)
#storageEngine=mmapv1
# auth=true
配置好上面的上面的文件就可以用配置文件启动服务啦
//启动命令
1.mongod -f /usr/local/mongodb/etc/mongo.conf
//启动成功,可在浏览器中验证
2.关闭服务时,按照上面的方式去关闭
//!!!但是,如果在上面配置了 鉴权 auth:true 就会 有问题。我们想关闭的时候会报错,告知我们没有权限
//解决很简单,没有权限就赋予一个权限
//如果是新安装的mongodb,默认是没有用户的,所以我们来创建用户
// 创建用户
db.createUser({user: 'root', pwd: '123456', roles:[{role:'root',db:'admin'}]})
// 登陆用户
db.auth('root','123456')
// 显示 1 说明登陆成功
// 赋予权限
db.grantRolesToUser('root', [{role: 'hostManager',db:'admin'}])
// 关闭服务
db.shutdownServer({force:true});
//但是 设置了 auth:true 的话后面使用 mongodump 备份数据和 使用 mongorestore 恢复数据也是不一样的,会有问题,以及在 使用 studio 3T 可视化工具连接服务器时也有有问题,这里展示下开启鉴权时使用 studio 3T 可视化工具连接服务器报的错误