# 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)"

An image

安装结束之后通过 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

解决方案是:

  1. 我的报错的缘由是因为在 /usr/local/Cellar/icu4c 文件夹下并没有 69.1 这个文件夹,给它创建一个就可以了。但一定要执行
sudo mkdir /usr/local/Cellar/icu4c/69.1

我直接在文件夹下执行了 sudo mkdir 69.1 不明白为什么不行

  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
  1. 赋权二:然后是执行的这个,就 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 即可链接

An image