# Mac 的安装
TIP
Mac 的安装要使用 homebrew
,然后通过 homwbrew
来安装 mongodb
,客户端安装的是 compass
# 安装 homebrew
打开 homebrew
的官网,就有安装的命令。目前 2022 年看到的是酱紫的,看到的命令行就是安装 homebrew
的语句,复制执行即可。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
安装结束之后通过 brew --version
就可以看到当前的版本号。
# 切换 Homebrew 源
Homebrew 由以下几部分组成:
名称 | 简介 |
---|---|
brew | Homebrew 的源代码仓库 |
homebrew-core | Homebrew 的核心软件仓库 |
homebrew-bottles | Homebrew 预编译二进制软件包 |
homebrew-cask | 提供 macOS 应用和大型二进制文件 |
# 切换成阿里源
# 查看 brew.git 当前源
$ cd "$(brew --repo)" && git remote -v
origin https://github.com/Homebrew/brew.git (fetch)
origin https://github.com/Homebrew/brew.git (push)
# 查看 homebrew-core.git 当前源
$ cd "$(brew --repo homebrew/core)" && git remote -v
origin https://github.com/Homebrew/homebrew-core.git (fetch)
origin https://github.com/Homebrew/homebrew-core.git (push)
# 修改 brew.git 为阿里源
$ git -C "$(brew --repo)" remote set-url origin https://mirrors.aliyun.com/homebrew/brew.git
# 修改 homebrew-core.git 为阿里源
$ git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.aliyun.com/homebrew/homebrew-core.git
# zsh 替换 brew bintray 镜像
$ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.zshrc
$ source ~/.zshrc
# bash 替换 brew bintray 镜像
$ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.bash_profile
$ source ~/.bash_profile
# 刷新源
# 这一步的时间巨长,不要怀疑出错,等等就行。如果确实没反应,就自求多福吧
$ brew update
# 安装 mongodb
直接上 github
搜索 mongodb/homebrew-brew
进入链接 (opens new window)
TIP
参考文档,安装社区版即可。由于现在 MongoDB 不再开源了,从 2019 年 9 月 2 日开始,HomeBrew 也从核心仓库当中移除了 mongodb 模块。
所以 brew info mongodb
也就找不到模块了
但是,MongoDB 官方提供了一个单独的 HomeBrew 的社区版本安装,要先执行 brew tap mongodb/brew
成功后再执行 brew install mongodb-community
即可,我当前安装的是 6.0.1。
虽然切换了源,但时间还是会很长 (๑◕︵◕๑)...
# mongodb 安装坑位
通过 brew
安装社区版的 mongodb
, 最初是让升级 xCode
,后来踩了一个坑报错是 Permission denied
的坑。
下面是我找解决办法时碰到的安装Octave
报相似错误的帖子,不过我们的报错信息相似(虽然我其实只记得第一行相似 😂😂)。大概的报错信息如下:
# 这也是我后来复制别人的,因为我的已经看不到了😃😃
# 我只记得我的是 69.1
cp: /usr/local/Cellar/icu4c/./69.1: Permission denied
cp: /var/folders/k4/xg60pppx3392pm_9tjyy35gc0000gn/T/d20200815-50984-1k6mia6/icu4c/./69.1: unable to copy extended attributes to /usr/local/Cellar/icu4c/./69.1: Permission denied
cp: /usr/local/Cellar/icu4c/./69.1/INSTALL_RECEIPT.json: No such file or directory
cp: /usr/local/Cellar/icu4c/./69.1/LICENSE: No such file or directory
解决方案是:
- 我的报错的缘由是因为在
/usr/local/Cellar/icu4c
文件夹下并没有69.1
这个文件夹,给它创建一个就可以了。但一定要执行
sudo mkdir /usr/local/Cellar/icu4c/69.1
我直接在文件夹下执行了 sudo mkdir 69.1
不明白为什么不行
- 赋权一:我先执行的是
sudo chown $USER /usr/local/Cellar/icu4c/69.1
再次 brew
安装后,仍然报错,最后几行长这样:
cp: chflags: /usr/local/Cellar/openssl@1.1/./1.1.1m/share: No such file or directory
cp: /private/tmp/d20220208-25404-1gp1q4y/openssl@1.1/./1.1.1m/share: unable to copy ACL to /usr/local/Cellar/openssl@1.1/./1.1.1m/share: No such file or directory
cp: setattrlist: /usr/local/Cellar/openssl@1.1/./1.1.1m: No such file or directory
cp: chown: /usr/local/Cellar/openssl@1.1/./1.1.1m: No such file or directory
cp: chmod: /usr/local/Cellar/openssl@1.1/./1.1.1m: No such file or directory
cp: chflags: /usr/local/Cellar/openssl@1.1/./1.1.1m: No such file or directory
cp: /private/tmp/d20220208-25404-1gp1q4y/openssl@1.1/./1.1.1m: unable to copy ACL to /usr/local/Cellar/openssl@1.1/./1.1.1m: Permission denied
cp: setattrlist: /usr/local/Cellar/openssl@1.1/.: Permission denied
- 赋权二:然后是执行的这个,就 OK 了。具体的命令信息,我目前的水平也不懂,有空研究下。
sudo chown -R ${USER}:staff /usr/local/Cellar/
# 配置 mongodb
# 补充于 2022-11-16,此时我已经拥有了公司新换的 M1 Mac,上述安装坑全部没有碰到。(⁎⁍̴̛ᴗ⁍̴̛⁎)
# 配置文件
# brew 安装的 mongodb 配置文件目录在 M1 芯片中是
/opt/homebrew/etc/mongod.conf
# 同事的非 M1 的配置目录是
/usr/local/etc/mongod.conf
# 非 brew 安装的可以查看是否一样
# 通过命令打开配置文件
vim /opt/homebrew/etc/mongod.conf
# 开始你的配置
#配置日志文件,MongoDB 采用的是yaml格式的配置文件
systemLog:
#1、日志输出形式: 可选参数为 syslog 或 file syslog 直接在终端输出 file 输出到文件
destination: file
#2、日志文件的路径: 当 destination 设置为 file 时必须
path: /opt/homebrew/var/log/mongodb/mongo.log
#3、是否以追加形式生成日志 : true 追加 false 备份原来的日志文件,并生成新>的日志文件
logAppend: true
#4、数据库路径
storage:
dbPath: /opt/homebrew/var/mongodb
#5、网络配置
net:
# 绑定IP(默认127.0.0.1,只能本机访问,要允许所有ip,使用0.0.0.0)
bindIp: 127.0.0.1, ::1
ipv6: true
# 后面的在配置文件中默认就没有了
#6、端口 (默认27017~27019,根据安装时的安装方式决定)
port: 27017
#7、进程方式
processManagement:
# 开启守护进程模式,如果 fork 为 false 的话,直接 ctrl + c 停止服务。
# 如果为true,关闭麻烦点。参考启动暂停方式 2
# 我选择的是false,对新手友好点,ctrl + c 即停
fork: false
# 全局环境变量配置
TIP
首先,我的电脑通过 mongod -version
后是可以直接获得当前版本号的。
也就是可以直接使用 mongod 指令所以不需要配置环境变量。
如果需要配置,找到 brew 安装 mongodb 的文件目录。我的在这里: /opt/homebrew/Cellar/mongodb-community/6.0.1/bin
接着就是会用 shell (opens new window)就可以了。
# 我当前用的是 item2
open ~/.zshrc
# 配置环境变量
export PATH=$PATH:/opt/homebrew/Cellar/mongodb-community/6.0.1/bin
# 保存完 :wq 推出后
source ~/.zshrc
# 查看之前的配置是否已经成功
echo $PATH
# 能看到刚才配置的路径
除了 mongod 指令外,有时候我们还需要进入 mongo 的执行环境。
大部分文档上看到的指令应该是 mongo
但是我当前安装的版本是 6.0.1,貌似没有这个指令。
但是翻遍了文档发现有 mongosh 指令可以进入执行环境。帖子参考这个 进入 mongo 环境 (opens new window)
# 启动与暂停 mongodb
# 启动暂停方式 1
- 启动服务
brew services start mongodb-community
, 启动服务后,可以输入mongo
回车来确认 - 暂停服务
brew services stop mongodb-community
# 启动暂停方式 2
我当前用的这个
启动: 使用 mongod 来启动服务, 通过 --config 或 -f 命令来使用配置文件
mongod --config opt/homebrew/etc/mongod.conf
# 或者
mongod -f opt/homebrew/etc/mongod.conf
注意:多次执行 mongod -f
指令并不能重启 mongodb。需要先通过下面的停止方案杀死当前的进程才行。
停止(参考的别人)
# 如果之前的配置文件里 fork 为 false 的话,直接 ctrl + c 停止服务。
# 如果 fork 为 true , 使用以下两种方法都可以。
# 方法一:通过查杀进程的方式,查看进程,使用 kill 命令;不能使用kill -9,为什么不能使用kill -9 请百度 kill 与 kill -9 的区别
# 通常启动服务成功,会输出服务的进程ID,也可以使用以下命令来查看ID
ps aux | grep -v grep | grep mongod
# 上述命令查出来的信息的第二位就是 进程ID
kill 进程ID 即可关闭当前的mongodb进程
#方法二:在客户端进去,使用shutdown命令
> use admin;
switched to db admin
> db.shutdownServer();
server should be down...
# 在主节点(primary)上运行shutdown命令时,服务器在关闭之前,⬇️
# 会先等待备份节点追赶主节点以保持同步。这将回滚的可能性降至最低,⬇️
# 但shutdown操作有失败的可能性。如几秒钟内没有备份节点成功同步,⬇️
# 则shutdown操作失败,主节点不会停止运行。
# 验证是否启动成功
浏览器访问 localhost:27017
可以成功打开一个页面,浏览器内容如下:
It looks like you are trying to access MongoDB over HTTP on the native driver port.
# mongodb 客户端工具
在 mongodb
的官网上提供了 Compass
工具,就是图标是个叶子的软件,进入安装对应电脑的版本即可。
启动后的界面现在长这样,如果已经启动了 mongodb 服务,直接点击 connect 即可链接
← Mongodb 简略 使用 Mongodb →