【问题标题】:Read-only file system when attempting mkdir /data/db on Mac [closed]在 Mac 上尝试 mkdir /data/db 时的只读文件系统 [关闭]
【发布时间】:2022-04-18 10:32:19
【问题描述】:

我正在尝试在主目录中创建一个新文件夹

尝试了各种例子

sudo mkdir /data/db

sudo mkdir -p /data/db

我一直在努力

mkdir: /data: 只读文件系统

【问题讨论】:

标签: mongodb macos terminal


【解决方案1】:

如果您有 Mac 并更新到 Catalina 或更新版本,则根文件夹是 no 可写时间更长。

我只是在其他地方更改了目录。

暂时使用这个命令

mongod --dbpath=/Users/user/data/db

【讨论】:

  • 有没有办法让它永久化?我每次启动 MongoDB 服务器时都必须输入它!
  • @AVPaul 也许不是最好的解决方案,但您可以创建一个引用您路径的别名。
  • @JeffGoes 我假设您没有用实际名称替换用户。
  • @AlexL 它也对我有用。但是每次我想运行我的 dev mongo db 时,我是否必须输入 mongod --dbpath=/Users/my_USER_name/data/db ?因为下次我运行 mongod 时,它说 /data/db not found
  • 如果你使用的是 /usr/local/etc/mongod.conf 下的 mac,你可以通过在 mongoDB 配置文件中设置 dbPath 来使其永久化。然后添加以下内容:“storage: dbPath: path to your db directory”
【解决方案2】:

来自官方文档https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/

安装homebrew 并运行以下命令

sudo chown -R $(whoami) $(brew --prefix)/*

然后

brew tap mongodb/brew

然后

brew install mongodb-community@4.2

brew services start mongodb-community

mongod --config /usr/local/etc/mongod.conf

然后

ps aux | grep -v grep | grep mongod

mongo

验证您是否可以在 mongo shell 中运行 show dbs

【讨论】:

  • brew services start mongodb-community => 错误:公式mongodb-community 未安装。你必须启动: brew services start mongodb/brew/mongodb-community@4.2
  • 我希望我可以多次点击投票按钮。
【解决方案3】:

随着新的 macOS Catalina 更新,文件夹 /data/db 变为只读,您无法修改它。按照此过程在另一个文件夹中创建数据库:

  1. 更改mongod目录:

    sudo mongod --dbpath /System/Volumes/Data/data/db

  2. 给它一个别名以将其用作mongod

    alias mongod="sudo mongod --dbpath /System/Volumes/Data/data/db"

  3. 只需在终端中输入mongod,它应该可以工作。

额外 =>如果你需要给它当前的用户权限,使用这行代码:

sudo chown -R $(whoami) /System/Volumes/Data/data/db

(仅供参考 -> $(whoami) 只是一个返回当前用户的变量)

【讨论】:

  • 我在第 1 步之前这样做了:sudo mkdir -p /System/Volumes/Data/data/db && sudo chown -R `id -un` /System/Volumes/Data/data/db。不确定这些文件夹是否已经存在,但将@xgqfrms 的答案与这个结合起来。非常感谢,这让我发疯了。
  • 这太完美了!
  • 即使我更改了/System/Volumes/Data/data/db 的所有权,我仍然需要在每次运行mongod 命令时提供密码
  • 我尝试了几种解决方案,唯一一个对我有用。谢谢。
  • 我挣扎了 2 天。现在它为我工作..感谢
【解决方案4】:

永久更改 mongod db 文件夹的路径。

these docs 之后,他们大致这么说。如果 mongod 使用 brew 服务启动:

$ brew services start mongodb-community@4.2

它将使用路径/usr/local/etc/mongod.conf的配置文件


要解决此问题,请编辑配置文件:

$ vim /usr/local/etc/mongod.conf

并更改 dbPath 例如像这样到你的主目录:

systemLog:
  destination: file
  path: /usr/local/var/log/mongodb/mongo.log
  logAppend: true
storage:
  dbPath: /Users/<username>/data/db
net:
  bindIp: 127.0.0.1 

保存文件并用 brew 重启 mongod:

$ brew services restart mongodb-community@4.2

【讨论】:

  • 这对我不起作用,mongo 仍在寻找 /data/db
  • @Xen_mar 您是否在编辑文件后尝试运行 mongod?显然 mongod 已经由 brew services start 运行
【解决方案5】:

你不能再在 Mac Catalina 的根目录上创建文件夹了!

https://www.apple.com/macos/catalina/features/

专用系统卷

macOS Catalina 在专用的只读系统宗卷中运行,这意味着它与所有其他数据完全分离,有助于提高 macOS 的可靠性。

# macOS Catalina, mkdir path
$ sudo mkdir -p /System/Volumes/Data/data/db

# give permissions
$ sudo chown -R `id -un` /System/Volumes/Data/data/db

# macOS 10.14.x -
$ sudo mkdir -p /data/db

# macOS 10.15.x +
$ sudo mkdir -p /System/Volumes/Data/data/db

参考

https://discussions.apple.com/thread/250720711

https://zellwk.com/blog/install-mongodb/

https://www.youtube.com/watch?v=DX15WbKidXY

【讨论】:

    【解决方案6】:

    因此,出于安全目的,Apple 在 macOS Catalina 中创建了一个新卷。如果您使用的是 macOS Catalina,则需要在 System/Volumes/Data 中创建 /data/db 文件夹。

    遵循这些命令

    1. sudo mkdir -p /System/Volumes/Data/data/db
    2. sudo chown -R id -un /System/Volumes/Data/data/db

    启动 MongoDB

    1. brew services run mongodb-community

    2. 享受?

    【讨论】:

    • brew services run mongodb-community 给了我Error: No available formula with the name "mongodb-community".
    【解决方案7】:

    如果您在 mac 上遇到问题,那么下面的命令很有用, whoami变量会获取当前用户

    mongod --dbpath=/Users/$(whoami)/data/db
    

    【讨论】:

      【解决方案8】:

      我不知道为什么 Apple 会这样做。所以现在,除了他们的之外,我们不能有任何根目录?这没有任何意义,使用 root 权限创建这些文件夹的人知道他们在做什么

      【讨论】:

        【解决方案9】:

        mongodb-community 公式的默认路径

        除了安装 MongoDB 服务器和工具二进制文件之外,mongodb-community 公式还创建:

        • 一个配置文件:/usr/local/etc/mongod.conf
        • 日志目录路径:/usr/local/var/log/mongodb
        • 数据目录路径:/usr/local/var/mongodb

        然后它对我有用:

        mkdir -p usr/local/var/mongodb/data/db
        

        【讨论】:

          【解决方案10】:

          当我正在学习 Udemy 课程时,这对我有用: 1. 通过在终端中输入以下内容来安装 HomeBrew

          /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
          
          1. 将旧的 /data/db 文件夹(如果要备份当前的 dbs)移动到非根文件夹并继续下一步

          2. 在终端中运行 一)brew uninstall mongodb b)如果需要运行brew uninstall --force mongodb c)brew tap mongodb/brew d)brew install mongodb-community e) brew services start mongodb/brew/mongodb-community

          3. 您现在只需在终端中运行 mongo,您将看到 mongo shell 符号 >。

          请让我知道这是否有效;) 根据这篇文章,我花了将近 2 个小时才弄清楚: https://apple.stackexchange.com/questions/362883/mongodb-doesnt-work-after-update-to-macos-catalina-10-15

          干杯, 拉度

          【讨论】:

            【解决方案11】:

            我这样做了:

            mkdir -p usr/local/var/mongodb/data/db
            

            因为新路径是“usr/local/var/mongodb”。

            【讨论】:

              【解决方案12】:

              要添加到David Buck wrote here,首先您必须实际创建目录。你可以这样做:

              sudo mkdir /System/Volumes/Data/data/db

              如果您收到此错误:

              "解析命令行错误:无法识别的选项 '--dbpath/System/Volumes/Data/data/db' 尝试 'mongod --help' 获取更多信息 信息”

              创建别名后,这只是因为 David Buck(虽然发表了非常有帮助的评论)在他的回答中漏掉了一个空格。

              要解决此问题,请键入

              unalias mongod

              然后输入

              别名 mongod="sudo mongod --dbpath /System/Volumes/Data/data/db"

              【讨论】:

              • 不是我……应该归功于 Eugène Beliaev。我刚刚编辑了他们的格式化答案...
              【解决方案13】:

              使用 macOS Catalina,您不能再将文件或数据存储在只读系统卷中,也不能从命令行写入“根”目录 ( / ),例如使用终端。

              【讨论】:

                【解决方案14】:

                您不能创建/data/ 目录。这是为 APFS 文件系统保留的。请查看Bombich’s 博客了解此问题。

                【讨论】:

                • 那么,这个只读文件问题能解决吗?我有同样的问题
                • 不,您需要为您的目录使用另一个名称。一个可能的解决方案是在另一个允许作为根目录的目录中创建数据目录。
                【解决方案15】:

                我创建了一个要点,通过简单的步骤在 catalina 上安装和运行 mongodb

                # install homebrew (https://brew.sh/) and run the following commands
                sudo chown -R $(whoami) $(brew --prefix)/*
                brew tap mongodb/brew
                brew install mongodb-community@4.2
                
                ## --- aliases to set in your zshrc file
                
                # open your zshrc file
                open ~/.zshrc
                # copy and paste shorcuts in the end of the file
                alias mongod='brew services run mongodb-community'
                alias mongod-start='brew services start mongodb-community' #will start MongoDB automatically when you login into your Macbook
                alias mongod-status='brew services list'
                alias mongod-stop='brew services stop mongodb-community'
                
                # restart your terminal
                # type mongod in your terminal for run service & mongod-stop for finish it
                # test your mongodb connection with
                mongo
                show dbs
                

                https://gist.github.com/sturmenta/cf19baa91b1d79d8ae2b305fb7e1f799

                【讨论】:

                  【解决方案16】:

                  Mac 版 Catalina 使根文件夹不再可写。

                  Brew 具有更新版本的 mongodb 以使用新路径(它自己创建)/usr/local/var/mongodb,按照以下说明操作将解决该问题:

                  Guide to installing updated mongodb-community-edition

                  brew install mongodb-community@VERSION 其中第一个带有修复的版本是 4.2

                  【讨论】:

                    猜你喜欢
                    • 2019-11-14
                    • 2020-04-26
                    • 2016-11-12
                    • 2020-10-16
                    • 1970-01-01
                    • 1970-01-01
                    • 2020-07-05
                    • 1970-01-01
                    • 2020-05-18
                    相关资源
                    最近更新 更多