macOS 升级到 Catalina (10.15.3) 后安装 MongoDB (Day 10)

本机当前版本:10.15.3 (19D76)

网络上的 Mac 安装 MongoDB 的教程十有八九都没法用了,倒腾了一下午,将今日份倒腾记录下来, 供参考

一、下载并解压

  1. 官网链接:找到 Software-Community Server 跳转,Download 即可

P.S. 自带浏览器下载很慢/老断线的话,可以考虑迅雷会员下载 ->体验起飞速度

  1. 下载完成后解压到 /Users/「username」/softwares 文件夹中, 并建议mongodb-macos-x86_64-4.2.3文件夹名称改为mongodb

P.S./Users/「username」/softwares为自建文件夹,可换为您喜欢的其他自定义文件夹(想安装的位置就行 )

P.P.S.可以自己在文件夹中双击解压,或终端中执行以下命令行完成解压:

sudo tar -zxvf mongodb-macos-x86_64-4.2.3.tgz

二、PATH 配置

  • 本机环境为 zsh 下;若为 bash 可能在 bash_profile 文件内配置

配置好 PATH ,我们就不用每次想要启动MongoDB 时,都要:

 cd /usr/local/mongodb/bin/
 ./mongod
  • 如何实现:

终端中执行以下命令:

open ~/.zshrc

在文件最末添加配置(别出错 ):

#mongodb 配置
PATH=$PATH:/Users/「username」/softwares/mongodb/bin

P.S. 同上文,/Users/「username」/softwares可换为其他自定义路径

保存退出后,终端中执行以下命令:

source ~/.zshrc

三、创建数据库存储目录

若从头完全按本文操作,则可直接照下方“解决方式”处的命令进行创建即可,不会报错 :)

错误及解决方式

按大多数教程,输入sudo mkdir -p /data/db后,产生错误:mkdir: /data/db: Read-only file system。(按个人理解是macOS 升级到 Catalina 的缘故)

  • 解决方式: 在用户文件夹中创建该目录,如:
mkdir -p /Users/「username」/softwares/mongodb/data/db
// username 需更改

P.S. 数据库目录也要跟着指定为该目录(即启动时需要完整输入如下指令):

mongod --dbpath /Users/「username」/softwares/mongodb/data/db

P.S.一定要使用绝对路径

P.P.S. 如果涉及到 permission 之类的权限类的报错的话,可尝试指令前加 sudo

其实到此就结束了,但长远来看,我们应使用配置文件启动 MongoDB,请见下文。

四、启动MongoDB

(一)设置配置文件

  1. 目的&好处:虽然还是很长一串指令, 但是我们可以在配置文件中写入很多配置,这样我们就不需要写n多条指令来完成启动了(本文仅进行路径配置,其他配置会另写文章)

  2. 原本启动时我们需要输入:

    mongod --dbpath /Users/「username」/softwares/mongodb/data/db
    

    设置配置文件后我们改为输入:

    mongod --config /Users/「username」/softwares/mongodb/conf/mongodb.conf
    
  3. 如何实现:

    1)在mongodb/ 文件夹中创建配置文件夹 conf

    2)conf 文件夹内创建配置文件,命名为 mongodb.conf

    3)打开配置文件mongodb.conf, 写入:

    storage:
        dbPath: "/Users/「username」/softwares/mongodb/data/db"
    

    4)保存退出,可以通过配置文件启动 MongoDB 了。

    5)成功标志:能看到如下的类似内容(倒数的几行里找):

    2020-02-20T22:56:54.665+0800 I NETWORK [listener] Listening on /tmp/mongodb-27017.sock
    2020-02-20T22:56:54.665+0800 I NETWORK [listener] Listening on 127.0.0.1
    2020-02-20T22:56:54.665+0800 I NETWORK [listener] waiting for connections on port 27017

    找到NETWORK行, 27017号端口的出现就是成功标志 :)

(二)错误及解决方式

  1. 请确保各个自建文件、文件夹的所有者均为「username」(owner),而不是 root

    如:mongodb 文件夹、data\db 文件夹、conf 文件夹、mongodb.conf 文件等

    • 修改文件/文件夹所有者权限的简单语法说明:sudo chown 「owner」 文件/文件夹名 即可

    • 修改文件/文件夹读写权限的简单语法说明:chmod 664 文件/文件夹名 即够用

      (664 对应-rw-rw-r-- ,如需了解更多权限设置可参考链接)

  2. 写入配置时,如果提示无法写入,请改为加 sudo 打开配置文件:sudo vim mongodb.conf,即可修改后顺利保存。另解::w !sudo tee %完成后请及时修改文件权限

  3. 写完配置文件,通过 conf 文件启动时,发现提示错误:Error parsing YAML config file: yaml-cpp: error at ...: illegal map value

    解决方式:把 tab 键换成 4 个空格键即可

  4. 启动MongoDB时出现:Failed to unlink socket file /tmp/mongodb-27017.sock...

    例如

    ...

    2016-07-12T16:52:28.912+0800 E NETWORK [initandlisten] Failed to unlink socket file /tmp/mongodb-27017.sock errno:1 Operation not permitted

    ...

    2020-02-20T15:33:48.907+0800 E NETWORK [initandlisten] Failed to unlink socket file /tmp/mongodb-27017.sock Permission denied

    ...

    • 从红色的提示可以看出是因为/tmp/mongodb-27017.sock这个文件没有操作权限

    • 去查他的权限,可以看到这个文件的所有者是root用户,因为在准备环境的时候用的是root用户,而当时用root用户启动过一个没成功,后面修改配置文件过后用mongodb用户启动就出现了这个问题。

    • 解决方式:

    直接把该文件删除掉,再用Mongodb用户启动就行了。

    sudo rm /tmp/mongodb-27017.sock
    mongod
    

    再次查询就可以看到是mongodb用户创建的文件了

  5. 启动MongoDB时出现:Failed to set up listener: SocketException: Address already in use
    解决方式:

    lsof -i :27017 //找到该端口号的 PID
    kill -9 61316  //61316为找到的 PID 号
    

五、关闭MongoDB

Ctrl+C


希望对看到这篇的你有帮助,不会倒腾大半天

开始一起愉快地继续学习/使用 MongoDB 吧 :)

你可能感兴趣的:(macOS 升级到 Catalina (10.15.3) 后安装 MongoDB (Day 10))